Hey Rui,

>From dt_proc_bpmatch() we call the breakpoint handler routines that can invoke 
>dt_proc_stop(). This will wait for main() in dtrace.c to invoke 
>dtrace_proc_continue().

Does that answer your question?

The difference between Mac OS X and Solaris is that I believe we fixed that bug 
in Solaris. I don't have the ID handy.

Adam

On Jul 5, 2010, at 5:51 AM, Rui Paulo wrote:

> 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


--
Adam Leventhal, Fishworks                        http://blogs.sun.com/ahl

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

Reply via email to