S.T.Chang
2009-Jun-22 05:32 UTC
[dtrace-discuss] Why Oracle process open(2)/ioctl(2) /dev/dtrace/helper?
Hi all, Under what circumstance would an exiting process open(2) and ioctl(2) on /dev/dtrace/helper? 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 KSTopen(/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 *** -- This message posted from opensolaris.org
Sang-Thong Chang
2009-Jun-22 05:37 UTC
[dtrace-discuss] Why Oracle process open(2)/ioctl(2) /dev/dtrace/helper?
The web interface dropped off most of my content, resend... Hi all, Under what circumstance would an exiting process open(2) and ioctl(2) on /dev/dtrace/helper? 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 ***
S.T.Chang
2009-Jun-22 07:00 UTC
[dtrace-discuss] Why Oracle process open(2)/ioctl(2) /dev/dtrace/helpe
A colleague of mine just pointed the issue. The USDT came from the C++ runtime library, libCrun.so.1. CR#6815915, fixed in the C++ shared lib patch. -- This message posted from opensolaris.org
Mike Gerdts
2009-Jun-22 14:00 UTC
[dtrace-discuss] Why Oracle process open(2)/ioctl(2) /dev/dtrace/helper?
I answered this earlier on a zfs-discuss (missed that it was on the wrong list), but it seems to be absent from the archive. Repeated below so that those that are best able to correct me can respond. :) On Mon, Jun 22, 2009 at 12:37 AM, Sang-Thong Chang<Sang-Thong.Chang at sun.com> wrote:> The web interface dropped off most of my content, resend... > > > 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 > > *** > > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org >-- Mike Gerdts http://mgerdts.blogspot.com/