> On Sep 22, 2021, at 11:22 AM, Andy Herrick <andy.herr...@oracle.com> wrote:
> 
> I still don't get the error your report.  Is there something else that needs 
> to be set up for using instrumentation ?

Nothing that I’m aware of.  Maybe there is something to do with Visual C/C++ 
runtime libraries that I have installed globally? -just a wild guess.

Ohhh… here’s something…

I had JDK 17 ‘bin’ folder on my PATH (along with many other things)
If I clear the PATH env var with:
 
 set PATH=

Then I get an different error:

Error occurred during initialization of VM
Could not find agent library instrument on the library path, with error: Can’t 
find dependent libraries
Module java.instrument may be missing from runtime image.

All I have to do to et back to the original error is

set PATH=C:\Tools\jdk-17\bin

So this is definitely related to the DLL search path, and it was just lucky 
that some libraries were found via PATH in my environment.

> 
> I do get a different error when I have both runtime and jre directories after 
> "cp -r jre runtime" (in FetchURL/build/application/FetchURL dir)
> 
> As built (before copy):
> 
>> $ ./FetchURL
>> *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with 
>> message c
>> an't find transform methodID at JPLISAgent.c line: 552
>> *** java.lang.instrument ASSERTION FAILED ***: "result" at JPLISAgent.c 
>> line: 400
>> 
>> FATAL ERROR in native method: processing of -javaagent failed
>> 
> after copy:
> 
>> $ ./FetchURL
>> Exception in thread "main" java.lang.ClassNotFoundException: 
>> io.m3si.utils.ClassL
>> oaderUtils$Agent
>>         at 
>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClas
>> sLoader.java:636)
>>         at 
>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Cl
>> assLoaders.java:182)
>>         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
>>         at 
>> java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAg
>> ent(InstrumentationImpl.java:433)
>>         at 
>> java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPre
>> main(InstrumentationImpl.java:527)
>> *** java.lang.instrument ASSERTION FAILED ***: "result" with message agent 
>> load/p
>> remain call failed at 
>> t:\workspace\open\src\java.instrument\share\native\libinstr
>> ument\JPLISAgent.c line: 422
>> FATAL ERROR in native method: processing of -javaagent failed, 
>> processJavaStart f
>> ailed
> 
> but then with jre removed and line in cfg removed I get the same error:
> 
>> $ ./FetchURL
>> Exception in thread "main" java.lang.ClassNotFoundException: 
>> io.m3si.utils.ClassLoaderUt
>> ils$Agent
>>         at 
>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader
>> .java:636)
>>         at 
>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoad
>> ers.java:182)
>>         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
>>         at 
>> java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Ins
>> trumentationImpl.java:433)
>>         at 
>> java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(In
>> strumentationImpl.java:527)
>> *** java.lang.instrument ASSERTION FAILED ***: "result" with message agent 
>> load/premain
>> call failed at 
>> t:\workspace\open\src\java.instrument\share\native\libinstrument\JPLISAge
>> nt.c line: 422
>> FATAL ERROR in native method: processing of -javaagent failed, 
>> processJavaStart failed
> 
> note the "t:\workspace" ?  I don't have a t: drive, where is that coming from 
> ?

Must be from how the JDK was built.  I don’t have a T: drive either.

jar -tvf build\application\FetchURL\app\libs\FetchURL-0.0.01.jar
     0 Wed Sep 22 11:16:40 EDT 2021 META-INF/
   248 Wed Sep 22 11:16:40 EDT 2021 META-INF/MANIFEST.MF
     0 Wed Sep 22 11:10:30 EDT 2021 io/
     0 Wed Sep 22 11:10:30 EDT 2021 io/m3si/
     0 Wed Sep 22 11:10:30 EDT 2021 io/m3si/utils/
     0 Wed Sep 22 11:10:30 EDT 2021 io/m3si/utils/fetchurl/
  3988 Wed Sep 22 11:10:30 EDT 2021 io/m3si/utils/fetchurl/Main.class
  1000 Wed Sep 22 11:10:30 EDT 2021 io/m3si/utils/ClassLoaderUtils$Agent.class
  4613 Wed Sep 22 11:10:30 EDT 2021 io/m3si/utils/ClassLoaderUtils.class

I extracted MANIFEST.MF just to be sure …

Manifest-Version: 1.0
Implementation-Title: Kayak Plugins Bootstrap
Premain-Class: io.m3si.utils.ClassLoaderUtils$Agent
Implementation-Version: 1.0.1
Agent-Class: io.m3si.utils.ClassLoaderUtils$Agent
Main-Class: io.m3si.utils.fetchurl.Main

Looks right to me.

Scott

> 
> /Andy
> 
> 
> On 9/22/2021 10:25 AM, Scott Palmer wrote:
>> Sorry That last build with the Oracle OpenJDK needed the build file changed 
>> to have
>> 
>>    vendor = JvmVendorSpec.ORACLE
>> 
>> as well as the command line property pointing to the path to the jdk,
>> 
>> Scott
>> 
>> 
>>> On Sep 22, 2021, at 10:24 AM, Scott Palmer <swpal...@gmail.com> wrote:
>>> 
>>> I reproduced it with the AZUL's distribution of OpenJDK (with JavaFX 
>>> modules bundled) and I just changed:
>>> 
>>>     vendor = JvmVendorSpec.ADOPTOPENJDK
>>> 
>>> And get the same error with that build of OpenJDK as well.  “OpenJDK 
>>> Runtime Environment Temurin-17+35 (build 17+35)”
>>> You can try that, as Gradle should download the JDK for you.
>>> 
>>> I then downloaded the Oracle build of OpenJDK from 
>>> https://urldefense.com/v3/__https://jdk.java.net/17/__;!!ACWV5N9M2RV99hQ!eG4msXvYMONuZH2PKW1Mddol9UY2VkepPpI36eTZz9c_70fXHLm84-lrbzZBwkTMGA$
>>>  
>>> <https://urldefense.com/v3/__https://jdk.java.net/17/__;!!ACWV5N9M2RV99hQ!eG4msXvYMONuZH2PKW1Mddol9UY2VkepPpI36eTZz9c_70fXHLm84-lrbzZBwkTMGA$>
>>>      (build 17+35-2724)
>>> unzipped it to C:\Tools
>>> building with:
>>> 
>>> gradlew -Porg.gradle.java.installations.paths=C:\Tools\jdk-17 clean build
>>> 
>>> I still reproduce the error.
>>> 
>>> Though the assertion in native JVM code that you are getting looks like yet 
>>> another bug!  So perhaps it is good that it is discovered as well.
>>> 
>>> 
>>> Scott
>>> 
>>>> On Sep 22, 2021, at 9:54 AM, Andy Herrick <andy.herr...@oracle.com 
>>>> <mailto:andy.herr...@oracle.com>> wrote:
>>>> 
>>>> I can't seem to get your testcase to work with the Oracle JDK configured.
>>>> 
>>>> I can build, but then when I run
>>>> 
>>>> $ ./build/application/FetchURL/FetchURL.exe
>>>> 
>>>> I get:
>>>> 
>>>>> *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with 
>>>>> message c
>>>>> an't find transform methodID at JPLISAgent.c line: 552
>>>>> *** java.lang.instrument ASSERTION FAILED ***: "result" at JPLISAgent.c 
>>>>> line: 400
>>>>> 
>>>>> FATAL ERROR in native method: processing of -javaagent failed
>>>> same behavior if I restore "runtime" directory and fix FetchURL.cfg to 
>>>> remove app.runtime entry.
>>>> 
>>>> anyway I used your two source files to build the test app without gradle, 
>>>> and the test can download 
>>>> https://urldefense.com/v3/__https://linear-89.frequency.stream/dist/localnow/89/hls/master/playlist.m3u8__;!!ACWV5N9M2RV99hQ!eG4msXvYMONuZH2PKW1Mddol9UY2VkepPpI36eTZz9c_70fXHLm84-lrbzbGSGkGog$
>>>>  
>>>> <https://urldefense.com/v3/__https://linear-89.frequency.stream/dist/localnow/89/hls/master/playlist.m3u8__;!!ACWV5N9M2RV99hQ!eG4msXvYMONuZH2PKW1Mddol9UY2VkepPpI36eTZz9c_70fXHLm84-lrbzbGSGkGog$>
>>>>   without any problems.
>>>> 
>>>> I then moved runtime to jre and added line "app.runtime=$APPDIR/../jre" to 
>>>> cfg file and app still ran fine (downloaded the above)
>>>> 
>>>> So I still don't have any way to reproduce this problemwith the Oracle jdk.
>>>> 
>>>> /Andy
>>>> 
>>>> 
>>>> PS:
>>>> 
>>>> Although something somewhere else may have changed to counter the problem, 
>>>> it's clear from your description, that since the only place in the code 
>>>> the default runtime path is used (instead of the actual runtime path, 
>>>> which may be different) is the line in WinLauncher.cpp to call 
>>>> SetDllDirectory().
>>>> 
>>>> This should be fixed - but would like a way to reproduce the problem it 
>>>> causes first.
>>>> 
>>>> /Andy
>>>> 
>>>> On 9/21/2021 12:12 PM, Andy Herrick wrote:
>>>>> I thought I could create a reproduction scenario by using an app with 
>>>>> "-splash:<image file>" arg then moving the jre as you did, but I have not 
>>>>> yet been able make it fail.
>>>>> 
>>>>> /Andy
>>>>> 
>>>>> On 9/21/2021 11:43 AM, Scott Palmer wrote:
>>>>>>> On Sep 21, 2021, at 11:40 AM, Alan Bateman <alan.bate...@oracle.com> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>> On 21/09/2021 15:54, Andy Herrick wrote:
>>>>>>>> I found the problem in 
>>>>>>>> open/src/jdk.jpackage/windows/native/applauncher/WinLauncher.cpp
>>>>>>>> 
>>>>>>>> we call SetDllDirectory() with the path to the bin dir in the default 
>>>>>>>> runtime directory, not the actual runtime directory.
>>>>>>>> 
>>>>>>>> since on Windows we never use other than the default runtime location 
>>>>>>>> - we had not seen a problem, but is bug I will file and fix.
>>>>>>>> 
>>>>>>> Good to see that you found it quickly. However I'm puzzled as why 
>>>>>>> initializingEncoding wasn't called, I would have expected the VM to 
>>>>>>> blow up during early startup. Would you have cycles to dig into that a 
>>>>>>> bit more in case something has been masked, like for example an 
>>>>>>> exception being swallowed.  Running with -Xlog:exceptions might reveal 
>>>>>>> something.
>>>>>> Do you have a case that reproduces the issue?
>>>>>> 
>>>>>> Scott

Reply via email to