<AWT Dev> Regression test failure loading a DLL
Pete Brunet
peter.brunet at oracle.com
Tue Dec 17 21:06:32 PST 2013
On 12/17/13 7:29 AM, Anthony Petrov wrote:
>> Immediate load in JAWT*, delay load in Java*
>
> Why is that? Can you try re-linking the JAWTAccessBridge.DLL so that
> it uses delayed libs loading (which is always a good thing) and see if
> this changes anything?
I tried delayload on ole32.dll for JAWTAccessBridge-32.DLL but that
didn't change anything.
>
> Also,
>> API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
>
> JDK doesn't support WinRT currently. The JAWT* (or any binary in JDK)
> just shouldn't be linked against these libraries (and probably other
> API-MS-*, too). Where do the dependencies come from? What does your
> Makefile do to link the JAWT* lib?
>
> --
> best regards,
> Anthony
>
> On 12/17/2013 12:44 AM, Pete Brunet wrote:
>> Hi Anthony, Thanks for helping...
>>
>> On 12/16/13 1:32 PM, Anthony Petrov wrote:
>>> Hi Pete,
>>>
>>> I see you've already tried the Dependency Walker.
>>>
>>> 1. Could you please clarify the following: if you compile two lists of
>>> dependencies, one for JavaAccessBridge.dll and another for
>>> JAWTAccessBridge.DLL, and compare them, are there any differences?
>> Differences:
>>
>> JAWT* has these extras
>> jvm.dll - error opening file
>> awt.dll - no problem with this and the following
>> java.dll
>> jawt.dll
>> verify.dll
>>
>> Immediate load in JAWT*, delay load in Java*
>> ole32 - colored red, i.e. missing export function required by parent
>> module
>> oleaut32.dll - no problem
>>>
>>> 2. If you change the order of loading the libraries, will it fail
>>> right away w/o even loading the JavaAccessBridge.dll ?
>> yes
>>>
>>> 3. If the above doesn't help, please post the full list of
>>> dependencies for JAWTAccessBridge.DLL as reported by the Dependency
>>> Walker.
>> Error opening file:
>> JVM.DLL
>> API-MS-WIN-CORE-COM-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
>> API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
>> API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
>> DCOMP.DLL
>> GPSVC.DLL
>> IESHIMS.DLL
>> Red (missing export function required by parent module):
>> API-MS-WIN-CORE-THREADPOOL-L1-1-0.DLL
>> OLE32.DLL
>> Red, delay load:
>> DWMAPI.DLL
>> IEFRAME.DLL
>> IMM32.DLL
>> MFPLAT.DLL
>> NDFAPI.DLL
>> USERENV.DLL
>> UXTHEME.DLL
>> No problems:
>> ADVAPI32.DLL
>> API-MS-WIN-CORE-CONSOLE-L1-1-0.DLL
>> API-MS-WIN-CORE-DATETIME-L1-1-0.DLL
>> API-MS-WIN-CORE-DEBUG-L1-1-0.DLL
>> API-MS-WIN-CORE-DELAYLOAD-L1-1-0.DLL
>> API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL
>> API-MS-WIN-CORE-FIBERS-L1-1-0.DLL
>> API-MS-WIN-CORE-FILE-L1-1-0.DLL
>> API-MS-WIN-CORE-HANDLE-L1-1-0.DLL
>> API-MS-WIN-CORE-HEAP-L1-1-0.DLL
>> API-MS-WIN-CORE-INTERLOCKED-L1-1-0.DLL
>> API-MS-WIN-CORE-IO-L1-1-0.DLL
>> API-MS-WIN-CORE-LIBRARYLOADER-L1-1-0.DLL
>> API-MS-WIN-CORE-LOCALIZATION-L1-1-0.DLL
>> API-MS-WIN-CORE-LOCALREGISTRY-L1-1-0.DLL
>> API-MS-WIN-CORE-MEMORY-L1-1-0.DLL
>> API-MS-WIN-CORE-MISC-L1-1-0.DLL
>> API-MS-WIN-CORE-NAMEDPIPE-L1-1-0.DLL
>> API-MS-WIN-CORE-PROCESSENVIRONMENT-L1-1-0.DLL
>> API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL
>> API-MS-WIN-CORE-PROFILE-L1-1-0.DLL
>> API-MS-WIN-CORE-RTLSUPPORT-L1-1-0.DLL
>> API-MS-WIN-CORE-STRING-L1-1-0.DLL
>> API-MS-WIN-CORE-SYNCH-L1-1-0.DLL
>> API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL
>> API-MS-WIN-CORE-UTIL-L1-1-0.DLL
>> API-MS-WIN-SECURITY-BASE-L1-1-0.DLL
>> API-MS-WIN-SECURITY-LSALOOKUP-L1-1-0.DLL
>> API-MS-WIN-SERVICE-CORE-L1-1-0.DLL
>> API-MS-WIN-SERVICE-MANAGEMENT-L1-1-0.DLL
>> API-MS-WIN-SERVICE-MANAGEMENT-L2-1-0.DLL
>> API-MS-WIN-SERVICE-WINSVC-L1-1-0.DLL
>> AWT.DLL
>> CRYPTBASE.DLL
>> GDI32.DLL
>> JAVA.DLL
>> JAWT.DLL
>> JAWTACCESSBRIDGE.DLL
>> KERNEL32.DLL
>> KERNELBASE.DLL
>> LPK.DLL
>> MSVCR100.DLL
>> MSVCRT.DLL
>> NTDLL.DLL
>> OLEAUT32.DLL
>> RPCRT4.DLL
>> SSPICLI.DLL
>> USER32.DLL
>> USP10.DLL
>> VERIFY.DLL
>> ACLUI.DLL
>> ACTIVEDS.DLL
>> ADSLDPC.DLL
>> ADVPACK.DLL
>> API-MS-WIN-DOWNLEVEL-ADVAPI32-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-ADVAPI32-L2-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-NORMALIZ-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-OLE32-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-SHELL32-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-SHLWAPI-L2-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-USER32-L1-1-0.DLL
>> API-MS-WIN-DOWNLEVEL-VERSION-L1-1-0.DLL
>> API-MS-WIN-SECURITY-SDDL-L1-1-0.DLL
>> APPHELP.DLL
>> ATL.DLL
>> AUTHZ.DLL
>> AVRT.DLL
>> BCRYPT.DLL
>> BROWCLI.DLL
>> CABINET.DLL
>> CERTCLI.DLL
>> CERTENROLL.DLL
>> CFGMGR32.DLL
>> CLBCATQ.DLL
>> COMCTL32.DLL
>> COMCTL32.DLL
>> COMDLG32.DLL
>> CREDUI.DLL
>> CRYPT32.DLL
>> CRYPTSP.DLL
>> CRYPTUI.DLL
>> CSCAPI.DLL
>> D2D1.DLL
>> D3D11.DLL
>> DAVHLPR.DLL
>> DBGHELP.DLL
>> DEVMGR.DLL
>> DEVOBJ.DLL
>> DEVRTL.DLL
>> DFSCLI.DLL
>> DHCPCSVC.DLL
>> DHCPCSVC6.DLL
>> DNSAPI.DLL
>> DRVSTORE.DLL
>> DSROLE.DLL
>> DUI70.DLL
>> DUSER.DLL
>> DWRITE.DLL
>> DXGI.DLL
>> EAPPCFG.DLL
>> EAPPPRXY.DLL
>> EFSADU.DLL
>> EFSUTIL.DLL
>> ELSCORE.DLL
>> ESENT.DLL
>> FMS.DLL
>> GDIPLUS.DLL
>> GPAPI.DLL
>> HLINK.DLL
>> IEADVPACK.DLL
>> IERTUTIL.DLL
>> IEUI.DLL
>> IMAGEHLP.DLL
>> IMGUTIL.DLL
>> INETCOMM.DLL
>> IPHLPAPI.DLL
>> LINKINFO.DLL
>> LOGONCLI.DLL
>> MFC42U.DLL
>> MLANG.DLL
>> MMDEVAPI.DLL
>> MPR.DLL
>> MPRAPI.DLL
>> MPRMSG.DLL
>> MSASN1.DLL
>> MSCTF.DLL
>> MSFEEDS.DLL
>> MSHTML.DLL
>> MSI.DLL
>> MSILTCFG.DLL
>> MSIMG32.DLL
>> MSLS31.DLL
>> MSOERT2.DLL
>> MSRATING.DLL
>> MSSIGN32.DLL
>> NCRYPT.DLL
>> NETAPI32.DLL
>> NETBIOS.DLL
>> NETJOIN.DLL
>> NETPLWIZ.DLL
>> NETUTILS.DLL
>> NEWDEV.DLL
>> NORMALIZ.DLL
>> NSI.DLL
>> NTDSAPI.DLL
>> NTSHRUI.DLL
>> OCCACHE.DLL
>> ODBC32.DLL
>> OLEACC.DLL
>> OLEDLG.DLL
>> ONEX.DLL
>> PCWUM.DLL
>> POWRPROF.DLL
>> PRINTUI.DLL
>> PRNTVPT.DLL
>> PROFAPI.DLL
>> PROPSYS.DLL
>> PSAPI.DLL
>> PUIAPI.DLL
>> RASAPI32.DLL
>> RASDLG.DLL
>> RASMAN.DLL
>> REGAPI.DLL
>> RSTRTMGR.DLL
>> RTUTILS.DLL
>> SAMCLI.DLL
>> SAMLIB.DLL
>> SCECLI.DLL
>> SECUR32.DLL
>> SENSAPI.DLL
>> SETUPAPI.DLL
>> SHDOCVW.DLL
>> SHELL32.DLL
>> SHLWAPI.DLL
>> SLC.DLL
>> SPFILEQ.DLL
>> SPINF.DLL
>> SPPC.DLL
>> SRVCLI.DLL
>> TAPI32.DLL
>> UIAUTOMATIONCORE.DLL
>> URLMON.DLL
>> VAULTCLI.DLL
>> VERSION.DLL
>> VPNIKEAPI.DLL
>> W32TOPL.DLL
>> WDI.DLL
>> WEBIO.DLL
>> WEBSERVICES.DLL
>> WER.DLL
>> WERUI.DLL
>> WINBRAND.DLL
>> WINDOWSCODECS.DLL
>> WINHTTP.DLL
>> WININET.DLL
>> WINMM.DLL
>> WINNSI.DLL
>> WINSCARD.DLL
>> WINSPOOL.DRV
>> WINSTA.DLL
>> WINTRUST.DLL
>> WKSCLI.DLL
>> WLANAPI.DLL
>> WLANUTIL.DLL
>> WLDAP32.DLL
>> WS2_32.DLL
>> WTSAPI32.DLL
>> XMLLITE.DLL
>>>
>>> --
>>> best regards,
>>> Anthony
>>>
>>> On 12/16/2013 08:02 PM, Pete Brunet wrote:
>>>> 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