Bug 4668

Summary: fstep misses first few instructions
Product: frysk Reporter: Mark Wielaard <mark>
Component: generalAssignee: Unassigned <frysk-bugzilla>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:
Bug Depends on: 4663    
Bug Blocks:    

Description Mark Wielaard 2007-06-20 15:52:26 UTC
fstep inserts an instruction observer in updateAttached() but doesn't BLOCK and
wait till the instruction observer is installed. This makes fstep miss the first
few instructions of the process.

This might actually be a bug in how instruction observers are installed in the
attaching states, not directly in fstep. It is reasonable fstep to assume that
in instruction observer is installed immediately instead of being queued in this
case.

See also the related bug #4663.
Comment 1 Andrew Cagney 2007-06-20 16:49:23 UTC
fstep needs to keep the task blocked using the attach observer until it as
received an ack confirming that the instruction observer has been added; making
it consistent with mcvet's testcase.
Comment 2 Mark Wielaard 2007-07-09 16:34:54 UTC
Fixed by:

frysk-core/frysk/bindir/ChangeLog
2007-07-09  Mark Wielaard  <mwielaard@redhat.com>

    Fixes bug #4668
    * fstep.java: Implement TaskObserver.Code.
    (updateAttached): Depending on whether or not the user supplied a
    command line to execute or a pid to trace either put a breakpoint
    on the first real instruction or start tracing immediately. Return
    Action.BLOCK.
    (updateHit): New method.
    (addedTo): Unblock task.
    * TestFStep.java: New test.

frysk-core/frysk/proc/live/ChangeLog
2007-07-09  Mark Wielaard  <mwielaard@redhat.com>

    * LinuxTaskState.java (wantToAttachContinue): Add
    handleAddObservation() and handleUnblock().