Bug 3343

Summary: testAsync(frysk.event.TestEventLoop)junit.framework.AssertionFailedError: dummy signal handler run
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: 2234    

Description Andrew Cagney 2006-10-11 13:50:13 UTC
testAsync(frysk.event.TestEventLoop)junit.framework.AssertionFailedError: dummy
signal handler run
   at frysk.event.TestEventLoop$14.execute(funit)
   at frysk.event.EventLoop.runEventLoop(funit)
   at frysk.event.EventLoop.runPolling(funit)
   at frysk.event.TestEventLoop.testAsync(funit)
   at frysk.junit.Runner.runCases(funit)
   at frysk.junit.Runner.runArchCases(funit)
   at funit.main(funit)
Comment 1 Chris Moller 2006-10-12 16:52:18 UTC
FWIW, fails when run under install/libexec/frysk/funit, passes when run from
build/frysk-core/TestRunner frysk.event.TestEventLoop
Comment 2 Andrew Cagney 2006-10-12 17:53:29 UTC
This does not occure in the build tree.
This does not occure when run stand-alone.
Comment 3 Andrew Cagney 2006-10-12 18:12:55 UTC
This fails, reducing ...

/home/scratch/frysk/install/libexec/frysk/funit frysk.junit.TestPaths
inua.eio.TestGet inua.eio.TestMmap inua.eio.TestPut inua.eio.TestWordSize
inua.util.TestPool lib.dw.tests.TestDwfl lib.elf.tests.TestElf
lib.opcodes.tests.TestOpcodes frysk.sys.proc.TestAuxv frysk.sys.proc.TestCmdLine
frysk.sys.proc.TestMaps frysk.sys.proc.TestStatus frysk.sys.StressMapRead
frysk.sys.TestCallPtrace frysk.sys.TestPtraceByteBuffer frysk.sys.TestPty
frysk.sys.TestSigSet frysk.cli.hpd.TestSetCreation frysk.cli.hpd.TestSetParser
frysk.dom.TestDOM frysk.event.TestEventLoop
Comment 4 Andrew Cagney 2006-10-12 18:41:14 UTC
Compare:

$ funit frysk.event.TestEventLoop Running
testEventLoop(frysk.event.TestEventLoop) ...PASS
Running testPeriodicTimer(frysk.event.TestEventLoop) ...PASS
Running testTimerRemoval(frysk.event.TestEventLoop) ...PASS
Running testScheduleBeforeRun(frysk.event.TestEventLoop) ...PASS
Running testSignalHandler(frysk.event.TestEventLoop) ...PASS
Running testAsync(frysk.event.TestEventLoop) ...PASS

to:

$ funit frysk.sys.StressMapRead frysk.event.TestEventLoop
Running testMapRead(frysk.sys.StressMapRead) ...<<BROKEN
http://sourceware.org/bugzilla/show_bug.cgi?id=3043 >>PASS
Running testEventLoop(frysk.event.TestEventLoop) ...PASS
Running testPeriodicTimer(frysk.event.TestEventLoop) ...PASS
Running testTimerRemoval(frysk.event.TestEventLoop) ...PASS
Running testScheduleBeforeRun(frysk.event.TestEventLoop) ...PASS
Running testSignalHandler(frysk.event.TestEventLoop) ...PASS
Running testAsync(frysk.event.TestEventLoop) ...FAIL
  junit.framework.AssertionFailedError: dummy signal handler run

The only difference is the presence of a disabled test.
Comment 5 Andrew Cagney 2006-10-12 19:36:35 UTC
Tear down code in frysk.sys.StressMapRead was leaving stray signals and waiptpid
events pending.  Lead to scrambling of EventLoop - which got the signal

Index: frysk-sys/frysk/sys/ChangeLog
2006-10-12  Andrew Cagney  <cagney@redhat.com>

        * StressMapRead.java (setUp): Delete, code merged into test
        proper.  Add broken due to 3360 - does not drain pending events.
Comment 6 Andrew Cagney 2006-10-12 19:53:21 UTC
It's back with a full testsulte run.
Comment 7 Andrew Cagney 2006-10-12 20:18:13 UTC
  $ funit frysk.sys.TestCallPtrace frysk.sys.TestPtraceByteBuffer
frysk.event.TestEventLoop

also fails
Comment 8 Andrew Cagney 2006-10-12 21:09:36 UTC
*** Bug 3360 has been marked as a duplicate of this bug. ***
Comment 9 Andrew Cagney 2006-10-12 21:17:55 UTC
Attempt two:

Index: frysk-sys/frysk/sys/ChangeLog
2006-10-12  Andrew Cagney  <cagney@redhat.com>

        * cni/TestLib.cxx (drainSignal): New.
        * TestLib.java (tearDown): New.
        (drainSignal): New.
        * StressMapRead.java (tearDown): Use TestLib.tearDown, remove
        broken due to 3360.
        * TestCallPtrace.java (tearDown): New.  Use TestLib.tearDown.
        * TestPtraceByteBuffer.java: Use TestLib.tearDown.