Community
Participate
Working Groups
Build: I20030214 I got a deadlock after selecting a method to override in the "Override/Implement methods" dialog, and clicking finish. Attaching the core dump file (I waited 30 minutes). The problem is that the reconciler background thread is in the middle of reconciling. It synchronizes on the working copy before starting this (JavaReconcilingStrategy.reconcile), and then it tries to acquire the workspace lock. In the main thread, the reverse has happened. It has acquired the workspace lock, and then it is synchronizing on the working copy (ImportsStructure.getReplaceRange). I believe the reconciler thread should not be synchronizing on the working copy before starting the reconcile operation. To avoid deadlock, the workspace lock should be acquired before attempting to obtain other monitors. In fact, the sync block may not be needed since the workspace lock guarantees that no other modifying operations are happening concurrently.
Created attachment 3526 [details] javacore dump file
Upgrading severity. The deadlock happens every time without fail. - open a java editor on a class (don't dirty it) - open the "override methods" dialog. - wait two or three seconds for the reconciler thread to block - select a method and click ok -> deadlock The workspace lock is already acquired when the dialog is open, which guarantees that the reconciler will be blocked.
*** This bug has been marked as a duplicate of 31891 ***