Hi,
I'm trying to follow the process creation code path from DTrace but something 
is missing:

First dtrace(1) calls:
        dtrace_proc_create()
                dt_proc_create()
                        Pcreate()
                        dt_proc_create_thread()
                                pthread_create(..., dt_proc_control)

dt_proc_control() sets the child running and expects all the rtld breakpoints 
to hit and also the main() breakpoint. 

Then dtrace(1) expects the childs to be stopped after returning from 
dtrace_proc_create() and calls dtrace_proc_continue().

What I'm missing is how this can happen since dt_proc_control() has a loop 
calling Psetrun(), which, according to my understanding, would set the child 
running until it died (and that's what's happening in FreeBSD).

On a related note, I noticed that running 'dtrace -c ls' on Solaris produces 
'dtrace: no probes specified' (because dtrace(1) never calls 
dtrace_proc_continue()), but on Mac OS X, 'dtrace -c ls' effectively runs ls(1) 
and then prints 'dtrace: no probes specified'.

Any ideas?

Thanks,
--
Rui Paulo


_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to