Bug 3484

Summary: testMultiThreadedStoppedAttached(frysk.proc.TestProcStopped)junit.framework.AssertionFailedError: event loop run explictly stopped (assertSendAddCloneWaitForAcks (Sig_USR1,Sig_USR2))
Product: frysk Reporter: Andrew Cagney <cagney>
Component: generalAssignee: Andrew Cagney <cagney>
Status: RESOLVED FIXED    
Severity: normal CC: cmoller
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:
Bug Depends on:    
Bug Blocks: 1582, 2654    
Attachments: Full log of the test case from when it (finally) fails.

Description Andrew Cagney 2006-11-08 18:12:31 UTC
FC 5 .18 kernel:

testMultiThreadedStoppedAttached(frysk.proc.TestProcStopped)junit.framework.AssertionFailedError:
event loop run explictly stopped (assertSendAddCloneWaitForAcks (Sig_USR1,Sig_USR2))
   at frysk.proc.TestLib.assertRunUntilStop(TestRunner)
   at frysk.proc.TestLib.assertRunUntilStop(TestRunner)
   at frysk.proc.TestLib$AckHandler.assertAwait(TestRunner)
   at frysk.proc.TestLib$AckHandler.await(TestRunner)
   at frysk.proc.TestLib$AckProcess.spawn(TestRunner)
   at frysk.proc.TestLib$AckProcess.assertSendAddCloneWaitForAcks(TestRunner)
   at frysk.proc.TestLib$AckProcess.<init>(TestRunner)
   at frysk.proc.TestLib$AttachedAckProcess.<init>(TestRunner)
   at frysk.proc.TestProcStopped.testMultiThreadedStoppedAttached(TestRunner)
   at frysk.junit.Runner.runCases(TestRunner)
   at frysk.junit.Runner.runArchCases(TestRunner)
   at frysk.junit.Runner.runTestCases(TestRunner)
   at TestRunner.main(TestRunner)
Comment 1 Andrew Cagney 2006-11-26 21:26:29 UTC
This is a utrace bug, block on FC 6, not FC 5.
Comment 2 Andrew Cagney 2006-11-26 22:35:04 UTC
*** Bug 3485 has been marked as a duplicate of this bug. ***
Comment 3 Andrew Cagney 2006-11-26 22:38:57 UTC
Running just testMultiThreadedStoppedAttached in isolation leads to failure (but
does take a few repeated test runs).
Comment 4 Andrew Cagney 2006-11-26 22:41:06 UTC
Created attachment 1439 [details]
Full log of the test case from when it (finally) fails.
Comment 5 Andrew Cagney 2006-11-26 23:25:22 UTC
Looking at the log, it appears that the second cloned thread (14435) is never
continued after its initial stop, and that the initial stop comes early - before
the clone event.

26-Nov-06 5:32:23 PM frysk.sys.Wait waitAllNoHang
FINE: frysk.sys.Wait pid 14435 status 0x137f WIFSTOPPED 19 (Stopped (signal))

26-Nov-06 5:32:23 PM frysk.sys.Wait waitAllNoHang
FINE: frysk.sys.Wait pid 14433 status 0x3057f WIFSTOPPED/CLONE 5
(Trace/breakpoint trap)
Comment 6 Andrew Cagney 2006-11-27 00:51:33 UTC
waitpid stop event for new thread arriving before the corresponding clone.

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.