Bug 5480 - Long send/expect sequences in the hpd test harness get lost
Summary: Long send/expect sequences in the hpd test harness get lost
Status: ASSIGNED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Rick Moseley
URL:
Keywords:
Depends on:
Blocks: 2246 5495
  Show dependency treegraph
 
Reported: 2007-12-12 17:50 UTC by Rick Moseley
Modified: 2014-05-28 19:45 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rick Moseley 2007-12-12 17:50:14 UTC
Long sequences of "e.send/e.expect" seem to make the hpd test harness lose its
mind/get out of sync or something of the sort.  After about 5-6
"e.send/e.expect" exchanges errors start occuring, AFAICT for not reason other
than the test harness  has lost its mind.

I'll put together a test case for this and set it to unresolved.
Comment 1 Rick Moseley 2007-12-12 18:50:03 UTC
Added new test and set it to unresolved:
frysk-core/frysk/hpd/TestHpdTestHarness.java.
Comment 2 Andrew Cagney 2007-12-17 18:56:36 UTC
After improving EofException and TimeoutException I'm seeing:

./TestRunner -u frysk.hpd.TestHpdTestHarness
Running testKillHpdTestHarness(frysk.hpd.TestHpdTestHarness) ...ERROR (UNRESOLVED)
  http://sourceware.org/bugzilla/show_bug.cgi?id=5480
  frysk.expunit.TimeoutException: timeout of 5expired; expecting:  <<Attached to
process*>>; buffer <<:
/home/scratch/frysk/git/native/frysk-core/frysk/pkglibdir/funit-threads-looper
(fhpd) run
java.lang.RuntimeException: not added
   at frysk.proc.live.LinuxProcState$3.handleDeleteObservation(fhpd)
   at frysk.proc.Proc$16.execute(fhpd)
   at frysk.event.EventLoop.runEventLoop(fhpd)
   at frysk.event.EventLoop.run(fhpd)
Exception in thread "Thread-1" frysk.sys.Errno$Esrch: ptrace: No such process
(op 0x11 (PTRACE_DETACH), pid 19102, addr 0x0, data 0x0)
   at frysk.proc.live.LinuxTask.sendDetach(fhpd)
   at frysk.proc.live.LinuxTaskState$BlockedSignal.handleDetach(fhpd)
   at frysk.proc.Task.performDetach(fhpd)
   at frysk.proc.live.LinuxProcState$Detaching.<init>(fhpd)
   at frysk.proc.live.LinuxProcState$3.handleDetach(fhpd)
   at frysk.proc.Proc$8.execute(fhpd)
   at frysk.event.EventLoop.runEventLoop(fhpd)
   at frysk.event.EventLoop.run(fhpd)
>>

Two things to notice:

-> Expecting <<Attached to process*>>
The pattern should read <<... process.*>>

-> there was a crash - the backtrace in <<...>> is from fhpd

Comment 3 Rick Moseley 2008-01-25 22:20:13 UTC
I modified TestHpdTestHarness changing the e.send's the
e.sendCommandExpectPrompt.  This did improve things somewhat.  I see
approximately a 80-90% improvement in that the test passes about 80-90% of the
time.  Now seeing this:

Running testKillHpdTestHarness(frysk.hpd.TestHpdTestHarness) ...FAIL
  junit.framework.AssertionFailedError: sent: <run> expecting: <Attached to
process.*starting/running.*> got: <TIMEOUT>

Time: 5.376
There was 1 failure:
1)
testKillHpdTestHarness(frysk.hpd.TestHpdTestHarness)junit.framework.AssertionFailedError:
sent: <run> expecting: <Attached to process.*starting/running.*> got: <TIMEOUT>
   at frysk.hpd.HpdTestbed.expectPrompt(HpdTestbed.java:106)
   at frysk.hpd.HpdTestbed.sendCommandExpectPrompt(HpdTestbed.java:141)
   at
frysk.hpd.TestHpdTestHarness.testKillHpdTestHarness(TestHpdTestHarness.java:67)
   at frysk.junit.Runner.runCases(Runner.java:203)
   at frysk.junit.Runner.runTestCases(Runner.java:457)
   at TestRunner.main(TestRunner.java:63)


I also see these stacktraces pretty regularly:

Running testKillHpdTestHarness(frysk.hpd.TestHpdTestHarness) ...ERROR
  frysk.expunit.TimeoutException: timeout of 5expired; expecting: 
<<Quitting\.\.\.>>; buffer <<Exception in thread "Thread-1" quit
frysk.sys.Errno$Esrch: ptrace: No such process (op 0x3 (PTRACE_PEEKUSR), pid
28352, addr 0x380, data 0x0)
   at frysk.sys.Ptrace$AddressSpace.transfer(Ptrace.cxx:308)
   at frysk.sys.Ptrace$AddressSpace.peek(Ptrace.java:200)
   at
frysk.proc.live.AddressSpaceByteBuffer$PeeksRequest.peek(AddressSpaceByteBuffer.java:167)
   at
frysk.proc.live.AddressSpaceByteBuffer$PeeksRequest.request(AddressSpaceByteBuffer.java:179)
   at frysk.proc.live.AddressSpaceByteBuffer.peek(AddressSpaceByteBuffer.java:193)
   at inua.eio.ByteBuffer.peekFully(ByteBuffer.java:101)
   at inua.eio.ByteBuffer.peekLittle(ByteBuffer.java:173)
   at inua.eio.ByteOrdered$2.peekULong(ByteOrdered.java:128)
   at inua.eio.ByteBuffer.getULong(ByteBuffer.java:549)
   at frysk.isa.banks.BankRegister.get(BankRegister.java:116)
   at frysk.isa.banks.BankArrayRegister.get(BankArrayRegister.java:75)
   at frysk.isa.banks.RegisterBanks.get(RegisterBanks.java:78)
   at frysk.proc.Task.getRegister(Task.java:306)
   at frysk.proc.live.LinuxX8664.isTaskStepped(LinuxX8664.java:111)
   at
frysk.proc.live.LinuxPtraceTaskState$Stepping.handleTrappedEvent(LinuxPtraceTaskState.java:1070)
   at
frysk.proc.live.LinuxPtraceTaskState$Stepping.handleStoppedEvent(LinuxPtraceTaskState.java:1172)
   at frysk.proc.live.LinuxPtraceTask.processStoppedEvent(LinuxPtraceTask.java:193)
   at frysk.proc.live.LinuxWaitBuilder.stopped(LinuxWaitBuilder.java:210)
   at frysk.sys.Wait.wait(Wait.cxx:588)
   at frysk.sys.Wait.waitAll(Wait.java:124)
   at frysk.event.WaitEventLoop.block(WaitEventLoop.java:88)
   at frysk.event.EventLoop.runEventLoop(EventLoop.java:379)
   at frysk.event.EventLoop.run(EventLoop.java:489)
>>
Comment 4 Jackie Rosen 2014-02-16 18:29:24 UTC Comment hidden (spam)