On nevada build 93 if I specify anything other than a wild card for the pid
providers probefunc or probemod dtrace can''t find the probes.
So with wild cards I get:
: enoexec.eu FSS 98 $; pfexec /usr/sbin/dtrace -n ''pid$target:::entry {
@[probeprov, probemod, probefunc] = count()
}'' -c "getent hosts foobar" | grep gethostbyname
dtrace: description ''pid$target:::entry '' matched 3413 probes
dtrace: pid 26816 has exited
pid26816 libnsl.so.1
_switch_gethostbyname_r 1
pid26816 libnsl.so.1
gethostbyname 1
pid26816 libnsl.so.1
gethostbyname_r 1
: enoexec.eu FSS 99 $;
bug specifying a probefunc:
: enoexec.eu FSS 101 $; pfexec /usr/sbin/dtrace -n
''pid$target::gethostbyname_r:entry {
@[probeprov, probemod, probefunc] = count()
}'' -c "getent hosts foobar" | grep gethostbyname
dtrace: invalid probe specifier pid$target::gethostbyname_r:entry {
@[probeprov, probemod, probefunc] = count()
}: probe description pid27710::gethostbyname_r:entry does not match any probes
: enoexec.eu FSS 102 $;
On solaris 10u3 it works.
--
This message posted from opensolaris.org
Hi Chris, Yeah, something looks to be broken. Use the ''-Z'' option for now as a workaround and I''ll take a look at it. Jon.> On nevada build 93 if I specify anything other than a wild card for the pid providers probefunc or probemod dtrace can''t find the probes. > > So with wild cards I get: > > : enoexec.eu FSS 98 $; pfexec /usr/sbin/dtrace -n ''pid$target:::entry { > @[probeprov, probemod, probefunc] = count() > }'' -c "getent hosts foobar" | grep gethostbyname > dtrace: description ''pid$target:::entry '' matched 3413 probes > dtrace: pid 26816 has exited > pid26816 libnsl.so.1 _switch_gethostbyname_r 1 > pid26816 libnsl.so.1 gethostbyname 1 > pid26816 libnsl.so.1 gethostbyname_r 1 > : enoexec.eu FSS 99 $; > > bug specifying a probefunc: > > : enoexec.eu FSS 101 $; pfexec /usr/sbin/dtrace -n ''pid$target::gethostbyname_r:entry { > @[probeprov, probemod, probefunc] = count() > }'' -c "getent hosts foobar" | grep gethostbyname > dtrace: invalid probe specifier pid$target::gethostbyname_r:entry { > @[probeprov, probemod, probefunc] = count() > }: probe description pid27710::gethostbyname_r:entry does not match any probes > : enoexec.eu FSS 102 $; > > On solaris 10u3 it works. > > > -- > This message posted from opensolaris.org > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org >
Hi Chris,
Looks like this is being caused by the change to direct bindings
that happened in snv_83. Basically, when direct binding is specified
we get an implicit -z lazyload on the link so libraries that ON
tools link against are now are marked for lazy loading:
#elfdump -d /bin/getent
Dynamic Section: .dynamic
index tag value
[0] POSFLAG_1 0x1 [ LAZY ]
[1] NEEDED 0x4ce libsocket.so.1
[2] POSFLAG_1 0x1 [ LAZY ]
[3] NEEDED 0x4f6 libnsl.so.1
[4] POSFLAG_1 0x1 [ LAZY ]
[5] NEEDED 0x50b libproject.so.1
[6] NEEDED 0x524 libc.so.1
As these libraries are not now loaded until explicitly referenced we
don''t
see them when we fire the process up as we used to prior to snv_83. The
workaround for you, as I said yesterday, is to use the ''-Z''
option. This
means that we carry on even if we don''t match anything and we should
get
a kick when the linker loads a library up and we check the incoming
library and see if it has anything we are interested in.
However, we don''t seem to be getting that kick to evaluate a new
library
under certain circumstances which I won''t go into here. In the
short term, if you are using snv_83 and upwards and you suspect you are
not matching something that should be there, try disabling lazy loading
by exporting the LD_NOLAZYLOAD variable before firing up dtrace(1M).
Jon.
> On nevada build 93 if I specify anything other than a wild card for the pid
providers probefunc or probemod dtrace can''t find the probes.
>
> So with wild cards I get:
>
> : enoexec.eu FSS 98 $; pfexec /usr/sbin/dtrace -n
''pid$target:::entry {
> @[probeprov, probemod, probefunc] = count()
> }'' -c "getent hosts foobar" | grep gethostbyname
> dtrace: description ''pid$target:::entry '' matched 3413
probes
> dtrace: pid 26816 has exited
> pid26816 libnsl.so.1
_switch_gethostbyname_r 1
> pid26816 libnsl.so.1
gethostbyname 1
> pid26816 libnsl.so.1
gethostbyname_r 1
> : enoexec.eu FSS 99 $;
>
> bug specifying a probefunc:
>
> : enoexec.eu FSS 101 $; pfexec /usr/sbin/dtrace -n
''pid$target::gethostbyname_r:entry {
> @[probeprov, probemod, probefunc] = count()
> }'' -c "getent hosts foobar" | grep gethostbyname
> dtrace: invalid probe specifier pid$target::gethostbyname_r:entry {
> @[probeprov, probemod, probefunc] = count()
> }: probe description pid27710::gethostbyname_r:entry does not match any
probes
> : enoexec.eu FSS 102 $;
>
> On solaris 10u3 it works.
>
>
> --
> This message posted from opensolaris.org
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss at opensolaris.org
>