Bug 3005

Summary: frysk-core testsuite failures on i386
Product: frysk Reporter: Stepan Kasal <skasal>
Component: generalAssignee: Unassigned <frysk-bugzilla>
Status: NEW ---    
Severity: normal CC: mark
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: i386 Last reconfirmed:
Bug Depends on: 3099    
Bug Blocks: 2004    

Description Stepan Kasal 2006-08-07 14:32:42 UTC
There were 2 errors:
1) testGetAuxv(frysk.proc.TestProcGet)java.lang.RuntimeException: unknown word
size for auxv (1|32l|64l|32b|64b 10000)
   at frysk.sys.proc.AuxvBuilder.construct(TestRunner)
   at frysk.sys.proc.AuxvBuilder.construct(TestRunner)
   at frysk.proc.LinuxProc.sendrecAuxv(TestRunner)
   at frysk.proc.Proc.getAuxv(TestRunner)
   at frysk.proc.TestProcGet.testGetAuxv(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)
2)
testCloneSyscall(frysk.proc.TestTaskSyscallObserver)java.lang.RuntimeException:
clone's parent in unexpected state syscallRunning
   at frysk.proc.TaskState.clonedState(TestRunner)
   at frysk.proc.Task.<init>(TestRunner)
   at frysk.proc.LinuxTask.<init>(TestRunner)
   at frysk.proc.LinuxHost$PollWaitOnSigChld$2.cloneEvent(TestRunner)
   at frysk.sys.Wait.waitAllNoHang(TestRunner)
   at frysk.proc.LinuxHost$PollWaitOnSigChld.execute(TestRunner)
   at frysk.event.EventLoop.runEventLoop(TestRunner)
   at frysk.event.EventLoop.runPolling(TestRunner)
   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.TestTaskSyscallObserver.testCloneSyscall(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)
There were 2 failures:
1) testI386Regs(frysk.proc.TestI386Regs)junit.framework.AssertionFailedError:
orig_eax register expected:<1> but was:<0>
   at frysk.proc.TestI386Regs.testI386Regs(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)
2)
testExecSyscall(frysk.proc.TestTaskSyscallObserver)junit.framework.AssertionFailedError:
Caught exec syscall expected:<false> but was:<true>
   at frysk.proc.TestTaskSyscallObserver.testExecSyscall(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)
Comment 1 Stepan Kasal 2006-08-09 19:43:27 UTC
Oh, as of now, there are about 40 ``failures'' and about 10 ``errors''

A typical ``failure'' looks like this:

38)
testTerminatedKillHUP(frysk.proc.TestTaskTerminateObserver)junit.framework.AssertionFailedError:
event loop run explictly stopped (startChild (Sig_USR1))
   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$Child.<init>(TestRunner)
   at frysk.proc.TestLib$AckProcess.<init>(TestRunner)
   at frysk.proc.TestLib$AckProcess.<init>(TestRunner)
   at frysk.proc.TestLib$DetachedAckProcess.<init>(TestRunner)
   at frysk.proc.TestLib$AttachedDaemonProcess.<init>(TestRunner)
   at frysk.proc.TestTaskTerminateObserver.check(TestRunner)
   at frysk.proc.TestTaskTerminateObserver.terminated(TestRunner)
   at frysk.proc.TestTaskTerminateObserver.testTerminatedKillHUP(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)

A typical ``error'' looks like this:

11)
testBlockingWhileTerminating(frysk.proc.TestTaskTerminateObserver)java.lang.NullPointerException
   at frysk.proc.TestTaskTerminateObserver.testBlockingWhileTerminating(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)

Comment 2 Stepan Kasal 2006-08-15 17:41:48 UTC
OK, so the mass break from comment #1 is fixed now.

The problems described in the original submission are still not solved on i386,
I'll mark them with brokenXXX(3005) in the CVS.
(The same tests pass on x86_64.)
Comment 3 Stepan Kasal 2006-08-18 18:56:03 UTC
No, they should not be marked by brokenXXX, because that would exclude them from
junit runs, too.
Comment 4 Mark Wielaard 2006-08-21 14:34:49 UTC
Could you add some more info about the environment and versions you are using?

./TestRunner frysk.proc.TestProcGet passes for me on both:
2.6.17-1.2174_FC5 x86_64 GNU/Linux
2.6.17-1.2573.fc6 i686 i386 GNU/Linux

./TestRunner frysk.proc.TestTaskSyscallObserver passes on:
2.6.17-1.2174_FC5 x86_64 GNU/Linux
But fails (1 in 3) when run on:
2.6.17-1.2573.fc6 i686 i386 GNU/Linux
1)
testCloneSyscall(frysk.proc.TestTaskSyscallObserver)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.TestTaskSyscallObserver.testCloneSyscall(TestRunner)
   at frysk.junit.Runner.<init>(TestRunner)
   at TestRunner.main(TestRunner)
Comment 5 Stepan Kasal 2006-08-21 15:01:02 UTC
I'm runnig the tests as part of the build on a build server.
IIRC, they usually have RHEL4, which should mean RHEL 4U4 these days.
(Details in another comment later/below.)

So yes, if the problem can be blamed on an obsolete kernel, then the fix is to
switch this check off in the spec file.  But I'm not able to judge this.
Comment 6 Stepan Kasal 2006-08-21 15:43:22 UTC
The build system uses:
Linux 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:56:28 EST 2006 i686 i686 i386 GNU/Linux

If the problems can be blamed on this kernel, then the right solution is to
switch off the checks (at the build time only).
Comment 7 Stepan Kasal 2006-08-21 15:44:28 UTC
The build system uses:
Linux 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:56:28 EST 2006 i686 i686 i386 GNU/Linux

If the problems can be blamed on this kernel, then the right solution is to
switch off the checks (at the build time only).