Bug 5254

Summary: stepping engine, fhpd, and breakpoints are not in sync
Product: frysk Reporter: Andrew Cagney <cagney>
Component: generalAssignee: Teresa Thomas <tthomas>
Status: RESOLVED FIXED    
Severity: normal CC: mcvet
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:
Bug Depends on:    
Bug Blocks: 5251, 5261, 5292    

Description Andrew Cagney 2007-11-02 15:52:35 UTC
This:

(fhpd) go
(fhpd) Breakpoint 0 main

The code like:

 actionpoint = bpManager.addFunctionBreakpoint(breakpt, die);
 actionpoint.addObserver(new CLIBreakpointObserver() {
    public void updateHit(final SourceBreakpoint bpt,
        Task task, long address) {
          // See comment in case above.
          Manager.eventLoop.add(new Event() {
             public void execute() {
                FunctionBreakpoint fbpt
                         = (FunctionBreakpoint) bpt;
                outWriter.print("Breakpoint ");
                outWriter.print(fbpt.getId());
                outWriter.print(" ");
                outWriter.println(fbpt.getName());

in BreakpointCommand, it should instead notify the stepping engine that a
breakpoint has occured so that the stepping engine can stop it (and possibly
other) threads; and then notify the cli that things have stopped due to a
breakpoint.
Comment 1 Andrew Cagney 2008-05-23 19:16:53 UTC
-> tthomas@redhat.com
Comment 2 Teresa Thomas 2008-06-06 18:52:54 UTC
    Synchronize fhpd, stepping engine and breakpoints.
    
    frysk-core/frysk/hpd/ChangeLog:
    2008-06-06  Teresa Thomas  <tthomas@redhat.com>
    
    	* BreakpointCommand.java (*.updateHit):
    	Use SteppingEngine.updateActionpointDoneEvent.
    	* TestBreakpoints.java (testGoAfterSimultaneousBreaks): New.   
    
    frysk-core/frysk/stepping/ChangeLog:
    2008-06-06  Teresa Thomas  <tthomas@redhat.com>
    
    	* SteppingEngine.java (updateActionpointDoneEvent): New.
    	(blockedByActionPoint): Use updateActionpointDoneEvent.
    	(blockedByActionPoint(Task,TaskObserver)): Test if messages set empty.