Andrew.Rutz at Sun.COM wrote: > hi, > I modified syseventd's 'start' method to have a "sleep 30" (so that > I could investigate a race condition). > > I then see this in syseventd's log: > > [ Jun 15 14:30:36 Executing start method > ("/lib/svc/method/svc-syseventd start") ] > [ Jun 15 14:30:37 Method "start" exited with status 0 ] > [ Jun 15 14:37:55 Method "start" exited with status 0 ] > > syseventd fork()s and leaves a daemon running. are the parent and > child processes BOTH saying they completed the 'start' method ? eg, > is there a libscf func being used at runtime to declare that 'start' > is complete? (eg, syseventd's binary links libscf: > Interesting. On a system running b60, the log reports the completion of only one start method.
[ Jun 18 14:48:13 Executing start method ("/lib/svc/method/svc-syseventd start") ] [ Jun 18 14:48:13 Method "start" exited with status 0 ] I wonder how your change can result in an additional exit code. By the way, this message is printed out in method_run(), usr/src/cmd/svc/startd/method.c > # ldd /usr/lib/sysevent/syseventd | grep libscf > libscf.so.1 => /lib/libscf.so.1 > > ...but i looked thru the code some... i don't see where a > state-transition is being communicated. > > what's going on ? State transition is communicated in a different path, restarter to the graph engine. See restarter_instance_update_states() in restarter.c -tony