io:kernel::done invalid address (0x0) in predicate on FreeBSD 10.1
Eric Badger
eric.badger at compellent.com
Wed Apr 15 20:18:57 UTC 2015
On 04/15/15 14:06, Lacey Powers wrote:
> Hello Everyone,
>
> I was trying to port a script from Illumos to FreeBSD 10.1, from this
> blog post, here:
>
> http://dtrace.org/blogs/ahl/2014/08/31/openzfs-tuning/
>
> The rw.d script specifically. I wished to use it forsome ZFS tuning and
> testing I have been doing on my workstation.
>
> Here is the script I came up with:
>
> https://gist.github.com/kassandry/219596d7f17e5b128e68
>
> The version I have mostly seems to work, aside from a single error,
> repeated a very large number of times during a run.=(
>
> Example:
>
> dtrace: error on enabled probe ID 3 (ID 58515: io:kernel::done): invalid
> address (0x0) in predicate at DIF offset 60
> dtrace: error on enabled probe ID 3 (ID 58515: io:kernel::done): invalid
> address (0x0) in predicate at DIF offset 60
>
> Despite adding
>
> args[0] != NULL
>
> to the predicate for io:::done, it still comes up.
I can't claim expertise here, but it seems that the 'io:::done' probe
can receive a 'struct bio' where 'bio_disk' is NULL. So a first thought
would be to have a predicate like:
/args[0] && args[0]->bio_disk && ts[...]/
I don't know under what circumstances bio_disk is NULL; would require
some digging to find out. Someone more familiar with this area may have
a better suggestion.
Eric
More information about the freebsd-dtrace
mailing list