[prev in list] [next in list] [prev in thread] [next in thread]
List: opensolaris-dtrace-discuss
Subject: Re: [dtrace-discuss] Nevada pid provider strangeness
From: Jon Haslam <Jonathan.Haslam () Sun ! COM>
Date: 2008-07-04 13:35:52
Message-ID: 486E2738.8010708 () sun ! com
[Download RAW message or body]
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@opensolaris.org
>
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic