Community
Participate
Working Groups
org.eclipse.core.runtime.Plugin.getLog().log(IStatus) is a standard way of registering events in workspace log, including for later diagnostic. 'Till recently there were no constrains from what thread it is called nor on existing synchronization locks. After upgrading to Eclipse 4.5.1 RC1, it can enter in deadlock in case UI thread for some reason cannot be released. The real use-case of deadlocking was reported for CDT product. See Bug 476989 . The stack trace is in https://bugs.eclipse.org/bugs/attachment.cgi?id=256465 This seems to be a side effect from Bug 472704 that introduced a Display#syncExec in AERI logger implementation. The patch contains the Display.syncExec (Shells#hasActiveWindow()) that indirectly introduced a dependency of not having UI thread locked.
Created attachment 256523 [details] A sample plugin to reproduce it A sample plugin is attach. Has the sources as well. Install it into a eclipse product and execute "Sample Menu->Sample command". There should be two dialogs, the last one confirming that there's no lock. The code from org.eclipse.test.testloginglock.handlers.SampleHandler.execute(ExecutionEvent) will lock the UI thread and execute a background job that will attempt to log into workbench.
The same sample plugin does work with Eclipse 4.5.0
New Gerrit change created: https://git.eclipse.org/r/55772
Gerrit change https://git.eclipse.org/r/55772 was merged to [master]. Commit: http://git.eclipse.org/c/epp/org.eclipse.epp.logging.git/commit/?id=3734a2810a6e6f6138638fd549f1c61fb29f76ed
Daniel, can you please migrate the ui deadlock test action to the aeri.ui.test error toolbar menu and add it to the manual test scenarios wiki page?
Discussion happened on bug 476989. This issue has been fixed.