Toolkit.getDefaultToolkit() hangs after com.apple.eio.FileManager call

Hendrik Schreiber hs at tagtraum.com
Sun Jan 6 03:26:31 PST 2013


Hi,

just because I spent some "quality" time with this:

Calling Toolkit.getDefaultToolkit() after a call to FileManager.findFolder(FileManager.kUserDomain, 0x61737570) will cause Toolkit.getDefaultToolkit() to hang.

So, if you intend to use com.apple.eio.FileManager, make sure to call Toolkit.getDefaultToolkit() *before* you call the FileManager.

-hendrik

PS: Bug is filed at Oracle.


java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

import com.apple.eio.FileManager;
import java.awt.*;
import java.io.FileNotFoundException;

public class ToolkitHang {

    private static final int kApplicationSupportFolder = 0x61737570;// asup

    public static void main(String[] args) throws FileNotFoundException {
        final String appSupportFolder = FileManager.findFolder(FileManager.kUserDomain, kApplicationSupportFolder);
        System.out.println("App Support Folder: " + appSupportFolder);
        Toolkit.getDefaultToolkit();
        System.out.println("Is never reached.");
    }
}

Where it hangs:

"main at 1" prio=5 tid=0x1 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	  at java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:-1)
	  at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
	  - locked <0x99> (a java.util.Vector)
	  - locked <0x9a> (a java.util.Vector)
	  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
	  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
	  at java.lang.Runtime.load0(Runtime.java:792)
	  - locked <0x54> (a java.lang.Runtime)
	  at java.lang.System.load(System.java:1059)
	  at java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:-1)
	  at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
	  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
	  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1846)
	  at java.lang.Runtime.loadLibrary0(Runtime.java:845)
	  at java.lang.System.loadLibrary(System.java:1084)
	  at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
	  at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
	  at java.security.AccessController.doPrivileged(AccessController.java:-1)
	  at java.awt.Toolkit.loadLibraries(Toolkit.java:1648)
	  at java.awt.Toolkit.<clinit>(Toolkit.java:1670)



More information about the macosx-port-dev mailing list