Bug 3705 - state "Attached.WaitForUnblock" did not handle handleRemoval
Summary: state "Attached.WaitForUnblock" did not handle handleRemoval
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Mark Wielaard
URL:
Keywords:
Depends on:
Blocks: 3346
  Show dependency treegraph
 
Reported: 2006-12-12 14:27 UTC by Mark Wielaard
Modified: 2007-03-30 15:00 UTC (History)
1 user (show)

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 Mark Wielaard 2006-12-12 14:27:08 UTC
If I do a lot of instruction stepping on a multithreaded task I get
{frysk.proc.LinuxPtraceTask@2e43b60,pid=783,tid=785,state=Attached.WaitForUnblock}
in state "Attached.WaitForUnblock" did not handle handleRemoval

If you happen to try to remove an Observer while the Task is in that TaskState
then it craps out. That state should probably be merged with the general
BlockedSignal state which does handle it correctly. Now that I am tracing that
code I am surprized this doesn't happen more often. Aha, I see. You need to be a
bit unlucky to trigger this. Normally an Attach happens quick enough so there is
no time to add an Observer, make it trigger/block and then delete it without
unblocking it first.
Comment 1 Mike Cvet 2006-12-12 14:35:52 UTC
Referenced from material in #3696.

{frysk.proc.LinuxPtraceTask@2e43b60,pid=783,tid=785,state=Attached.WaitForUnblock}
 in state "Attached.WaitForUnblock" did not handle handleRemoval

frysk.proc.State.unhandled(FryskGui)
frysk.proc.TaskState.handleRemoval(FryskGui)
frysk.proc.Task.performRemoval(FryskGui)
frysk.proc.LinuxPtraceProc.sendRefresh(FryskGui)
frysk.proc.LinuxPtraceHost.sendRefresh(FryskGui)
frysk.proc.LinuxPtraceHostState$1.handleRefresh(FryskGui)
frysk.proc.Host$1.execute(FryskGui)
frysk.event.EventLoop.runEventLoop(FryskGui)
frysk.event.EventLoop.run(FryskGui)
frysk.gui.Gui$3.run(FryskGui)
java.lang.Thread.run(libgcj.so.7rh)
Comment 2 Mike Cvet 2006-12-14 19:39:36 UTC
Just got another one, slightly different:

{frysk.proc.LinuxPtraceTask@3967ceb5,pid=26079,tid=26079,state=blockedContinue} 
in state "BlockedSignal" did not handle handleRemoval

frysk.proc.State.unhandled(FryskGui)
frysk.proc.TaskState.handleRemoval(FryskGui)
frysk.proc.Task.performRemoval(FryskGui)
frysk.proc.LinuxPtraceProc.sendRefresh(FryskGui)
frysk.proc.LinuxPtraceHost.sendRefresh(FryskGui)
frysk.proc.LinuxPtraceHostState$1.handleRefresh(FryskGui)
frysk.proc.Host$1.execute(FryskGui)
frysk.event.EventLoop.runEventLoop(FryskGui)
frysk.event.EventLoop.run(FryskGui)
frysk.gui.Gui$3.run(FryskGui)
java.lang.Thread.run(libgcj.so.7rh)
Comment 3 Mark Wielaard 2007-03-30 16:00:17 UTC
Issue in comment #1 should have been fixed by:

2007-03-28  Mark Wielaard  <mark@klomp.org>

        * LinuxPtraceTaskState.java (attaching):
        Add handleUnblock, handleAddObservation and handleDeleteObservation.
        (Attached): Add handleTerminatedEvent.

The issue in comment #2 is something different and I'll have opened a new bug
#4298 for it.