Hi, Both Petr and me were in Toronto last week. And he pointed out that his bug report #4895 about "updateHit gets called for each task" was still open and that he had to work around that for fltrace. Nothing is more motivating than meeting your users in person, so here is a fix and an explicit test case for that issue: frysk-core/frysk/proc/ChangeLog 2007-10-29 Mark Wielaard * Observable.java (observers): Now a HashMap. (add): Keep count. (delete): Likewise. (contains): New method. (iterator): Use HashMap.keySet(). (removeAllObservers): Likewise. * Task.java (notifyCodeBreakpoint): Check whether observer is contained in the codeObservers of this Task. * TestTaskObserverCode.java (testMultiTaskUpdate): New test. (testMultiTaskUpdateUnblockDelete): Likewise. (requestDummyRun): New variant that takes a Task. frysk-core/frysk/proc/live/ChangeLog 2007-10-29 Mark Wielaard * LinuxTaskState.java (sendContinue): Add logging. The actual fix should have been only a simple one-liner in Task.notifyCodeBreakpoint() to check whether the Task was actually monitoring this particular breakpoint address. But it was a little bit more involved than that. Since Observers, especially Code Observers, can be added more than once the ltrace testcase Petr added showed a latent bug where removing a Code observer from one location would completely remove it from that task. That is why Observable now keeps track of how many times an Observer is added. Writing the testMultiTaskUpdate showed another issue when you unblock and immediately delete a Code observer (while the Task is resumed and in the process of stepping over the breakpoint in question). I rewrote it into its own testcase (testMultiTaskUpdateUnblockDelete) and filed a bug report #5229. I also added some logging to LinuxTaskState.sendContinue() to make it easier to track these issues down. Cheers, Mark