Bug 559773 - Deadlock in org.eclipse.ui.internal.progress.ProgressManager since bug 558655
Summary: Deadlock in org.eclipse.ui.internal.progress.ProgressManager since bug 558655
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.15   Edit
Hardware: All All
: P3 major (vote)
Target Milestone: 4.15 M3   Edit
Assignee: Sebastian Ratz CLA
QA Contact:
URL:
Whiteboard:
Keywords: regression
Depends on: 558655
Blocks:
  Show dependency tree
 
Reported: 2020-02-03 04:09 EST by Sebastian Ratz CLA
Modified: 2020-02-03 07:20 EST (History)
3 users (show)

See Also:


Attachments
Thread Dump (22.65 KB, text/plain)
2020-02-03 04:09 EST, Sebastian Ratz CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastian Ratz CLA 2020-02-03 04:09:45 EST
Created attachment 281676 [details]
Thread Dump

Bug 558655 can cause a deadlocks in  org.eclipse.ui.internal.progress.ProgressManager.

See attached thread dump.
Comment 1 Sebastian Ratz CLA 2020-02-03 04:12:24 EST
I think in

  org.eclipse.ui.internal.progress.ProgressManager.removeJob(Job)

the

  uiRefreshThrottler.throttledExec();

needs to be moved outside the synchronized block.
Comment 2 Eclipse Genie CLA 2020-02-03 04:18:40 EST
New Gerrit change created: https://git.eclipse.org/r/157052
Comment 3 Paul Pazderski CLA 2020-02-03 04:24:17 EST
(In reply to Sebastian Ratz from comment #1)
> I think in
> 
>   org.eclipse.ui.internal.progress.ProgressManager.removeJob(Job)
> 
> the
> 
>   uiRefreshThrottler.throttledExec();
> 
> needs to be moved outside the synchronized block.

I think you are right. And I think we should also move the listener notify loop in the e4 version of removeJob out of the synchronized block.
Comment 5 Paul Pazderski CLA 2020-02-03 07:04:19 EST
Thanks Sebastian. Hope I made you not too much trouble finding this issue.
Comment 6 Sebastian Ratz CLA 2020-02-03 07:20:10 EST
Our test suite found it :)

I just had to wait for the right moment for a jstack ;)