JDK-7180977 : Pending String deadlocks UIDefaults
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 7
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2012-07-01
  • Updated: 2012-09-06
  • Resolved: 2012-07-17
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
Retrieving a value from UIDefaults which has been set to the literal string "Pending" blocks indefinitely.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Put "Pending" in UIDefaults, then retrieve it.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
"Pending" is returned.
ACTUAL -
Deadlock.

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
public class Pending implements Runnable {
	public static void main(String[] args) {
		EventQueue.invokeLater(new Pending());
	}

	@Override
	public void run() {
		UIManager.put("foobar", "Pending");
		System.out.println(UIManager.get("foobar"));
	}
}

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Use new String("Pending") instead of the literal string "Pending".