| Summary: | Deadlock in RuntimeProcess.terminated() | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | John Cortell <john.cortell> | ||||||||
| Component: | Debug | Assignee: | Platform-Debug-Inbox <platform-debug-inbox> | ||||||||
| Status: | VERIFIED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | darin.eclipse, nmehrega, pawel.1.piech | ||||||||
| Version: | 3.6 | Flags: | darin.eclipse:
review+
|
||||||||
| Target Milestone: | 3.6 RC1 | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | Windows XP | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
|
Description
John Cortell
Created attachment 167253 [details]
call stack of blocked threads
See similar bug # 291342 I think this bug is another fallout from fixing bug 261837. We should not be calling IProcess.exitValue() inside a sync. section. Created attachment 167347 [details]
Suggested fix.
This patch just takes the call to IProcess.exitValue() outside the sync section.
(In reply to comment #0) > I started noticing the Debug view not properly reflecting a terminated session. > Typical symptom of a DSF deadlock. I've attached a call stack of the relevant > threads. Notice the involvement of the show full paths action > > Steps to reproduce: > 1. Launch a DSF-GDB session. > 2. Terminate > 3. Repeat steps 1 & 2 until Debug view "hangs" upon termination of debug > session I actually am not able to reproduce this on my system. John, could you verify the fix? Also, the trace does not include the DSF session thread. Is there a reason why the exitValue() query not completing? Oh wait, I just noticed the bug title again, where does the show full paths action come in? (In reply to comment #6) > Oh wait, I just noticed the bug title again, where does the show full paths > action come in? The main thread has ShowFullPathsAction.selectionChanged() in its callstack (In reply to comment #5) > (In reply to comment #0) > > I started noticing the Debug view not properly reflecting a terminated session. > > Typical symptom of a DSF deadlock. I've attached a call stack of the relevant > > threads. Notice the involvement of the show full paths action > > > > Steps to reproduce: > > 1. Launch a DSF-GDB session. > > 2. Terminate > > 3. Repeat steps 1 & 2 until Debug view "hangs" upon termination of debug > > session > > I actually am not able to reproduce this on my system. John, could you verify > the fix? Also, the trace does not include the DSF session thread. Is there a > reason why the exitValue() query not completing? Sorry. I guess I accidentally closed that thread before taking the threads snapshot. The deadlock was happening frequently at home (50%). I don't know that I'll be able to reproduce it at the office. I'll try again tonight before the fix to get you the dsf thread, then I'll apply your proposed fix and see if it fixes it. I believe I need to commit the fix today for RC1. Darin do you think the risk in this fix is acceptable? (In reply to comment #9) > I believe I need to commit the fix today for RC1. Darin do you think the risk > in this fix is acceptable? Pawel, I forgot to test this last night. I can get you an answer this evening. (In reply to comment #9) > I believe I need to commit the fix today for RC1. Darin do you think the risk > in this fix is acceptable? The RC1 build is Thursday, May 13. (In reply to comment #11) > The RC1 build is Thursday, May 13. Thanks! In that case we can deal with it early next week. (In reply to comment #8) I can no longer reproduce the deadlock after applying the fix (which, btw, froze the GUI). However I'm either seeing a side effect of the change or a different problem. A terminated session is intermittently not going away correctly. See the attached screenshot. This is after 15 debug-and-terminate iterations, and a trailing "Remove All Terminated Launches" action invocation. Created attachment 167609 [details]
screenshot of new issue or side-effect of fix
I'm also able to reproduce this issue. I haven't tried out Pawel's patch yet. Note that I'm seeing the "Remove All Terminated Launches" problem noted in comment#13 *without* applying the patch. Hence it's not a side effect of the attached patch. It's a separate problem and I've filed bug#312267 to keep track of it. Patch looks good to me. +1 (In reply to comment #13) > A terminated session is intermittently not going away > correctly. See the attached screenshot. This is after 15 debug-and-terminate > iterations, and a trailing "Remove All Terminated Launches" action invocation. In your screenshot the inferior process is not shown as terminated (though in Navid's they are). Can you select and terminate the inferior prcesses? The outcome is definitely better than the original bug symptoms so I went ahead and committed the fix. We can track the other symptoms in bug 312267. Thanks. Already reviewed. (In reply to comment #13) > (In reply to comment #8) > I can no longer reproduce the deadlock after applying the fix (which, btw, > froze the GUI). However I'm either seeing a side effect of the change or a > different problem. A terminated session is intermittently not going away > correctly. See the attached screenshot. This is after 15 debug-and-terminate > iterations, and a trailing "Remove All Terminated Launches" action invocation. I can no longer reproduce this side-issue. I've tried about 60 launches, using Mingw 6.8 and 7.0 and Cygwin 6.8 and haven't seen the issue once. Whatever it was has almost certainly been fixed since the reproducibility rate was about 30% when I reported it. (In reply to comment #19) > I can no longer reproduce this side-issue. I've tried about 60 launches, using > Mingw 6.8 and 7.0 and Cygwin 6.8 and haven't seen the issue once. Whatever it > was has almost certainly been fixed since the reproducibility rate was about > 30% when I reported it. This was most likely due to bug 312813. Thanks John. |