On Mon, Jun 22, 2009 at 12:12 AM, Sang-Thong
Chang<sang-thong.ch...@sun.com> wrote:
>
> Hi all,
>
>
> Under what circumstance would an exiting process open(2) and
> ioctl(2) on /dev/dtrace/helper?

This happens if the executable or any of its shared libraries have
USDT probes defined.  It is coming from dtri.c, which exists on each
system as /usr/lib/dtrace/$ISA/dtri.o.

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/drti.c

When an executable or library is compiled with dtrace probes, drti.o
is linked into it and the dtrace_dof_fini function is executed on
exit.

>
> I have an issue here where CU was complaining that their
> Oracle processes were taking a long time in ioctl(2) on
> /dev/dtrace/helper during shutdown. Removing group/world
> readable bit on /dev/dtrace/helper avoided the long shutdown
> time.
>
> So, the puzzling question is why /dev/dtrace/helper was being
> ioctl(2)ed on?
>
> I doubt this is a binary with USDT.  truss(1M) shown the following:
>
>
> Base time stamp:  1244728105.2977  [ Thu Jun 11 22:48:25 KST 2009 ]
> 16003/1:        psargs: oraclePOM1 (LOCAL=NO)
> 16003/1:        read(31, 0x1069F3796, 2064)     (sleeping...)
> ...
> 16003/1:        1468.9156        0.0005 open("/dev/dtrace/helper", O_RDWR)
>            = 8
> 16003/1:        1477.3773        8.4617 ioctl(8,
> (('d'<<24)|('t'<<16)|('h'<<8)|2), 0x00000000) = 0
> 16003/1:        1477.3781        0.0008     Received signal #14, SIGALRM
> [caught]
> 16003/1:        1477.3783        0.0002 lwp_sigmask(SIG_SETMASK, 0x9FBEF057,
> 0x0000FFF7) = 0xFFBFFEFF [0x0000FFFF]
>
>   1277  */
>   1278 #define DTRACEHIOC              (('d' << 24) | ('t' << 16) | ('h' <<
> 8))
>   1279 #define DTRACEHIOC_ADD          (DTRACEHIOC | 1)        /* add helper
> */
>   1280 #define DTRACEHIOC_REMOVE       (DTRACEHIOC | 2)        /* remove
> helper */
>
>
>
> ustack() from dtrace(1M) shown this was from within the
> exit hanlder in exit(2).
>
>  open(/dev/dtrace/helper)
>
>              libc.so.1`open
>              libCrun.so.1`0xffffffff7a50aed8
>              libCrun.so.1`0xffffffff7a50b0f4
>              ld.so.1`call_fini+0xd0
>              ld.so.1`atexit_fini+0x80
>              libc.so.1`_exithandle+0x48
>              libc.so.1`exit+0x4
>              oracle`_start+0x184
>
> It would be great if anyone can help extend my understanding
> of dtrace. Thanks.
>
> Regards
> Sang Thong
>
>
> -----------------------------------------------------------------
>
> 1788:   oraclePOM1 (LOCAL=NO)
>        data model = _LP64  flags = ORPHAN|MSACCT|MSFORK
>  /1:    flags = ASLEEP  read(0x11,0x106346b16,0x810)
>
> 1788:   oracleEOM1 (LOCAL=NO)
> /lib/sparcv9/libumem.so.1
> /oraom/app/DBMS/lib/libskgxp10.so
> /oraom/app/DBMS/lib/libhasgen10.so
> /opt/ORCLcluster/lib/libskgxn2.so
> /oraom/app/DBMS/lib/libocr10.so
> /oraom/app/DBMS/lib/libocrb10.so
> /oraom/app/DBMS/lib/libocrutl10.so
> /oraom/app/DBMS/lib/libjox10.so
> /oraom/app/DBMS/lib/libclsra10.so
> /oraom/app/DBMS/lib/libdbcfg10.so
> /oraom/app/DBMS/lib/libnnz10.so
> /lib/sparcv9/libkstat.so.1
> /lib/sparcv9/libnsl.so.1
> /lib/sparcv9/libsocket.so.1
> /lib/sparcv9/libgen.so.1
> /lib/sparcv9/libdl.so.1
> /usr/lib/sparcv9/libsched.so.1
> /lib/sparcv9/libc.so.1
> /lib/sparcv9/libaio.so.1
> /lib/sparcv9/librt.so.1
> /lib/sparcv9/libm.so.2
> /opt/SUNWcluster/lib/sparcv9/libudlm.so
> /usr/cluster/lib/sparcv9/libhaops.so.1
> /lib/sparcv9/libmd.so.1
> /usr/cluster/lib/sparcv9/libscha.so.1
> /usr/cluster/lib/sparcv9/libsecurity.so.1
> /usr/cluster/lib/sparcv9/libclos.so.1
> /lib/sparcv9/libdoor.so.1
> /usr/lib/sparcv9/libzonecfg.so.1
> /lib/sparcv9/libsecdb.so.1
> /usr/lib/sparcv9/libCstd.so.1
> /usr/lib/sparcv9/libCrun.so.1
> /lib/sparcv9/libuuid.so.1
> /lib/sparcv9/libnvpair.so.1
> /lib/sparcv9/libsysevent.so.1
> /lib/sparcv9/libsec.so.1
> /usr/lib/sparcv9/libbrand.so.1
> /usr/lib/sparcv9/libpool.so.1
> /lib/sparcv9/libscf.so.1
> /lib/sparcv9/libproc.so.1
> /lib/sparcv9/libuutil.so.1
> /usr/lib/sparcv9/libxml2.so.2
> /lib/sparcv9/libcmd.so.1
> /lib/sparcv9/libavl.so.1
> /usr/lib/sparcv9/libexacct.so.1
> /lib/sparcv9/librtld_db.so.1
> /lib/sparcv9/libelf.so.1
> /lib/sparcv9/libctf.so.1
> /lib/sparcv9/libpthread.so.1
> /usr/lib/sparcv9/libz.so.1
> /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
>
>> > Mon, 22 Jun 2009 09:06:09 KST
>  open(/dev/dtrace/helper)
>
>              libc.so.1`open
>              libCrun.so.1`0xffffffff7a50aed8
>              libCrun.so.1`0xffffffff7a50b0f4
>              ld.so.1`call_fini+0xd0
>              ld.so.1`atexit_fini+0x80
>              libc.so.1`_exithandle+0x48
>              libc.so.1`exit+0x4
>              oracle`_start+0x184
>
> ***
> _______________________________________________
> zfs-discuss mailing list
> zfs-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
>



-- 
Mike Gerdts
http://mgerdts.blogspot.com/
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to