When a fork occures, frysk is delivered two events: - parent stopped with fork event (child pid as extra info) - child stopped with the current kernel, on an smp box at least, frysk instead sees: - child stopped - parent stopped with fork event (child pid as extra info) that is the events arrive in a different order, and more importantly, the << child stopped >> event arrives before frysk knows that the child process even exists (which, from an architectural pov is impossible :-).
Downstream rhel bug: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=202115
commit 73b36e6611a952baa33f61ac9075fee600e36dab Author: Andrew Cagney <cagney@redhat.com> Date: Mon Nov 27 00:50:22 2006 +0000 Index: frysk-core/frysk/proc/ChangeLog 2006-11-26 Andrew Cagney <cagney@redhat.com> * LinuxHost.java (PollWaitOnSigChild.waitObserver.cloneEvent): Call attemptDeliveringFsckedKernelEvents to force re-delivery of any stray waitpid events. (attemptDeliveringFsckedKernelEvents): Add more logging.