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.
|