<AWT Dev> Regression test failure loading a DLL

Pete Brunet peter.brunet at oracle.com
Mon Dec 16 08:02:13 PST 2013


I'm writing a regression test and it is failing trying to load
bin\JAWTAccessBridge.DLL.  It was successful in loading
bin\JavaAccessBridge.dll just prior to the failure.  These two DLLs are
in jre\bin.  Here's the failure:

java.lang.UnsatisfiedLinkError:
C:\\Users\\Pete\\JDK8\\JDK-8029691\\jdk8\\build\\windows-x86-normal-server-release\\images\\j2sdk-image\\jre\\bin\\JAWTAccessBridge.dll:
Can't find dependent libraries
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1929)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1835)
 at java.lang.Runtime.loadLibrary0(Runtime.java:870)
 at java.lang.System.loadLibrary(System.java:1119)
 at JABDLL$4.run(JABDLL.java:116)
 at java.security.AccessController.doPrivileged(Native Method)
 at JABDLL.foundLegacyDLLs(JABDLL.java:113)
 at JABDLL.main(JABDLL.java:67)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:483)
 at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94)
 at java.lang.Thread.run(Thread.java:744)

Here's the pertinent code:

private static boolean foundLegacyDLLs() {
            java.security.AccessController.doPrivileged(
                new java.security.PrivilegedAction() {
                    public Object run() {
                        System.loadLibrary("JavaAccessBridge");
                        return null;
                    }
                }, null, new
RuntimePermission("loadLibrary.JavaAccessBridge")
            );
            java.security.AccessController.doPrivileged(
                new java.security.PrivilegedAction() {
                    public Object run() {
                        System.loadLibrary("JAWTAccessBridge");  // line
116, fails here
                        return null;
                    }
                }, null, new
RuntimePermission("loadLibrary.JAWTAccessBridge")
            );
            return true;
    }

Here's the jtreg run:

$ /cygdrive/c/Users/Pete/JDK8/jtreg/win32/bin/jtreg
-testjdk:/Users/Pete/JDK8/JDK-8029691/jdk8/build/windows-x86-normal-server-release/images/j2sdk-image
-verbose:summary closed/com/sun/java/accessibility/JABDLL.java
C:\Users\Pete\JDK8\JDK-8029691\jdk8\jdk\test\TEST.groups: group
needs_jre: file not found: java/text/Bidi/Bug6665028.java  // assume
this can be ignored
FAILED: closed/com/sun/java/accessibility/JABDLL.java
Test results: failed: 1
Report written to
C:\Users\Pete\JDK8\JDK-8029691\jdk8\jdk\test\JTreport\html\report.html
Results written to C:\Users\Pete\JDK8\JDK-8029691\jdk8\jdk\test\JTwork
Error: Some tests failed or other problems occurred.

Here's the prolog to the test case:

/*
  * @test
  * @summary ...
  * @run main JABDLL
  */

The built image runs fine in normal use, i.e. I can run SwingSet2 with
the same image so I assume it's something I'm not doing right with
respect to jtreg.

The dependency walker reports jvm.dll which is in bin\server.  I tried
moving that to bin but that didn't help.   Also some Win DLLs were
reported most of which start with API-MS-WIN- but I assume those are
false negatives.  The sdk image I am testing is 32 bit and the DLL is
also 32 bit.  Hopefully it's just something I don't yet understand about
jprt, like maybe a missing @ tag in the prolog.

Any ideas on how to debug this?

Pete




More information about the awt-dev mailing list