Well it turns out that various proc commands (pldd, pstack to name a few) 
send process control messages to the process by writing to /proc/PID/ctl. 
One of those commands is PCRUN which makes the process runnable.

I noticed though that if I stopped the process outside of DTrace with pstop,
the process stayed stopped even after running these procfs commands.

So all I had to do to work around this was add a pstop command after the DTrace 
stop():

   stop();
   system("pstop %d",pid)
   ... collect till my heart's content
   system("prun %d",pid);

Jim


> Hi,
> 
> I'm using the rexit/stop()/prun() dance to capture
> process exit in order to grab various procfs commands
> on exit. Works fine for simple program like "sleep".
> But for Java (and other threaded customer apps) it
> runs one or 2 of the p-commands, but the process goes
> away before I can get all I want:
> 
> $ cat exit.d
> #!/usr/sbin/dtrace -qws
> 
> syscall::rexit:entry
> /execname == "sleep" || execname == "java"/
> {
>         stop();
> system("pargs %d",pid);
>         system ("pldd %d",pid);
> system ("pfiles %d",pid);
>         system ("pstack %d",pid);
>   system ("prun %d",pid);
> 
> 
> $ ./exit.d&
> [1] 22487
> 
> OK, now test a "sleep" exit:
> 
> bash-3.00$ sleep 5
> 22488:  sleep 5
> argv[0]: sleep
> argv[1]: 5
> 22488:  sleep 5
> /lib/libc.so.1
> /usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.3
> 22488:  sleep 5
>   Current rlimit: 256 file descriptors
> 0: S_IFCHR mode:0620 dev:287,0 ino:12582952 uid:5667
>  gid:7 rdev:24,18
>      O_RDWR
>  /devices/pseudo/p...@0:18
> 1: S_IFCHR mode:0620 dev:287,0 ino:12582952
>  uid:5667 gid:7 rdev:24,18
>      O_RDWR
>  /devices/pseudo/p...@0:18
> 2: S_IFCHR mode:0620 dev:287,0 ino:12582952
>  uid:5667 gid:7 rdev:24,18
>      O_RDWR
>  /devices/pseudo/p...@0:18
> 2488:  sleep 5
> feea4d18 ecvt     (2, 8047290, 8047296, 0, 8047298,
>  8047306)
> 
> Looks like all the p-commands completed. But for
> java:
> 
> 0$ /usr/java/bin/java -version
> java version "1.5.0_20"
> Java(TM) 2 Runtime Environment, Standard Edition
> (build 1.5.0_20-b02)
> Java HotSpot(TM) Client VM (build 1.5.0_20-b02, mixed
> mode, sharing)
> 22513:  /usr/java/bin/java -version
> argv[0]: /usr/java/bin/java
> argv[1]: -version
> 22513:  /usr/java/bin/java -version
> /lib/libthread.so.1
> /lib/libdl.so.1
> /lib/libc.so.1
> /usr/jdk/instances/jdk1.5.0/jre/lib/i386/client/libjvm
> .so
> /lib/libsocket.so.1
> /usr/lib/libsched.so.1
> /usr/lib/libCrun.so.1
> /lib/libm.so.1
> /lib/libnsl.so.1
> /lib/libm.so.2
> /lib/libscf.so.1
> /lib/libdoor.so.1
> /lib/libuutil.so.1
> /lib/libgen.so.1
> /lib/libmd.so.1
> /lib/libmp.so.2
> /usr/jdk/instances/jdk1.5.0/jre/lib/i386/native_thread
> s/libhpi.so
> /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libverify.so
> /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libjava.so
> /usr/jdk/instances/jdk1.5.0/jre/lib/i386/libzip.so
> /usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.3
> bash-3.00$ pfiles: cannot examine 22513: no such
> process
> pstack: cannot examine 22513: no such process or core
> file
> prun: cannot control 22513: no such process
> 
> 
> Any ideas? Something is telling the process to
> continue.
> 
> Jim
-- 
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to