One more question: you're not using VS2012, are you? I'm asking because I doubt VS2010 could ever link against the WINRT libs, it's only possible with VS2012 which we shouldn't use for JDK currently.

--
best regards,
Anthony

On 12/17/2013 05:29 PM, 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?

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



Reply via email to