JDK-6608764 : test/closed/java/awt/Focus/TemporaryLostComponentDeadlock fails
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 7
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-09-25
  • Updated: 2011-05-17
  • Resolved: 2011-05-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
7 b25Fixed
Related Reports
Relates :  
The regression test


fails on all platforms.

EVALUATION It seems that we have to add a private object that the PropertyChangeSupport methods will use for the locking purposes.

SUGGESTED FIX http://sa.sfbay.sun.com/projects/awt_data/7/6608764/

EVALUATION It's a regression of the fix 4811096 "Allow mixing of heavy and lightweight components", integrated into JDK 7.0 b19. The test in question is to test a deadlock and it... deadlocks. It creates a dialog, shows it and then acquires a lock on the dialog and tries to dispose it (on a custom thread). The disposal is performed (by AWT) on EDT. When it comes to Component.removeNotify() method it tries to evaluate the following line: removePropertyChangeListener("opaque", opaquePropertyChangeListener); This is just what was added with the fix for 4811096. The problem though, that this method is synchronized by "this". And the lock is not free as the test holds it. The deadlock happens.