Community
Participate
Working Groups
Build Identifier: 1.4.0.20110614-2335 If there is a syncExec-call from a background-thread when there is no more browser-side available (User closed browser or network is down) that call does not return when the HTTP-Session times out and the display gets closed. After those events the background-thread is still locked in its syncExec-call because it waits in Synchronizer.syncExec for the RunnableLock to be marked as "done". Even interrupting the thread does not help because that exception is caught inside and there is a while(!done) loop arround the try-catch block. I would propose to not just nullify messages in Synchronizer.releaseSynchronizer but to iterate through them, mark them all as done and notify the threads to make sure the syncExec-Calls return. The problem does of not happen if we use asyncExec but we were having sporadic deadlocks with that in 1.3 (see bug 351269). Now we are leaking lots of threads instead so we will probably go back to asyncExec for now and check out if 1.4 fixed bug 351269. Reproducible: Always Steps to Reproduce: 1.) Worbench is open, UICallback is enabled, background-activities trigger syncExec from time to time, everthing is fine 2.) the user just closes the browser or the network-connection goes down 3.) another syncExec-call happens but does not return because there is no browser-side any more 4.) session timeout happens, the display gets closed but the syncExec call does not return
Created attachment 199921 [details] Test case that demonstrates the bug
Created attachment 199948 [details] Refined test and solution proposal In Synchronizer#releaseSynchronizer(), all RunnableLocks of sync-runnables are manipulated so that their done() method will return true and then notified. This causes the execution to continue in syncExec(). The runnable itself will not be executed.
Committed patch to CVS HEAD
Applied patch to v14_Maintenance with a replacement of missing AtomicBoolean in Java 1.4 in Display_Test.
*** Bug 354700 has been marked as a duplicate of this bug. ***
Fixed in v14_Tree_Table_Merge branch. (Code copied from v14_Maintenance branch)
*** Bug 328347 has been marked as a duplicate of this bug. ***