Summary: | Thread suspend/resume errors in classes with the "same" name | ||
---|---|---|---|
Product: | [Eclipse Project] JDT | Reporter: | Jared Burns <jared_burns> |
Component: | Debug | Assignee: | Darin Wright <darin.eclipse> |
Status: | VERIFIED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P1 | CC: | darin.eclipse, jerome_lanneluc, knut_radloff |
Version: | 2.0 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: |
Description
Jared Burns
2001-10-11 14:19:15 EDT
In the latest code stream, I have no problem. I recently changed the implementation of stepping/dropping, etc. I do not know if I fixed this as a side effect. The bug still exists when I try the example on Linux. I tested this on WinNT, however, and it worked correctly. Seems this is a Linux-only bug? We've managed to reproduce this bug on Windows, but only while debugging it (with breakpoints in the host). We suspect we've found the root of the problem: Two sets of ClassLoadEvents are being fired when Hello2() is loaded. Suspect the event flow is: 1. Receive ClassLoadEventSet. Install breakpoints, resume thread. 2. Receive BreakpointEvent. Handle as usual. 3. Receive duplicate ClassLoadEventSet. Reinstall breakpoints, resume thread. No sooner has the breakpoint been hit, than we are resuming the thread. Investigation continues. It wasn't that we were receiving multiple EventSets for the class load, but that we were resuming the same thread for each event in the EventSet. So the interaction looked like: - VM suspends - VM fires ClassLoadEvent set (2 events) - EventDispatcher handles event set and calls EventSet.resume() - EventSetImpl, iterating over the events in the set, resumes the thread for the first class load event. - Thread resumes on VM and hits a breakpoint - VM suspends and fires breakpoint event - EventSetImpl, still iterating over the events in the set, resumes the thread (again) for the second class load event - VM resumes and hits the second breakpoint The EventSetImpl has been fixed to fire only one resume event per thread per call to EventSetImpl#resumeThreads() Please verify. Verified. *** Bug 5083 has been marked as a duplicate of this bug. *** |