Bug 63091 - CSV Data Set Config: UnsatisfiedLinkError from awt.dll on Windows Nanoserver despite use of -n
Summary: CSV Data Set Config: UnsatisfiedLinkError from awt.dll on Windows Nanoserver ...
Status: RESOLVED DUPLICATE of bug 61486
Alias: None
Product: JMeter
Classification: Unclassified
Component: Main (show other bugs)
Version: 5.0
Hardware: Other other
: P2 normal (vote)
Target Milestone: JMETER_5.1
Assignee: JMeter issues mailing list
URL:
Keywords: FixedInTrunk
Depends on:
Blocks:
 
Reported: 2019-01-18 15:05 UTC by Richard MacAleese
Modified: 2019-01-21 20:29 UTC (History)
1 user (show)



Attachments
A ZIP file containing a tests.jmx file, a CSV file, and jmeter.log of the error (2.82 KB, application/x-zip-compressed)
2019-01-18 15:05 UTC, Richard MacAleese
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Richard MacAleese 2019-01-18 15:05:38 UTC
Created attachment 36380 [details]
A ZIP file containing a tests.jmx file, a CSV file, and jmeter.log of the error

When running JMeter with the -n (no-gui) flag on Windows Nanoserver, the CSV Data Set Config element produces an uncaught java.lang.UnsatisfiedLinkError exception from awt.dll. The message reads, "Can't find dependent libraries. See log file for details."

I've attached the contents of the jmeter.log file, a sample JMX file, and a sample CSV file (place in the same directory as the JMX file). To reproduce, follow the below instructions.

1) On a Windows host, install Docker for Windows from Docker Hub (https://hub.docker.com/editions/community/docker-ce-desktop-windows).

2) Copy the attached JMX file to a subfolder of the JMeter installation folder.

3) Change Docker's configuration to run Windows containers by right clicking the Docker icon in the system tray and choosing "Switch to Windows containers...".

4) Open Powershell and use the command `docker run -it -v {jmeter-install-dir}:C:\jmeter -m 2g --entrypoint powershell 13-ea-3-jdk-nanoserver-sac2016`

5) The Powershell context will switch. You are now inside the Docker image. Your JMeter installation folder is mapped to C:\jmeter. Run C:\jmeter\bin\jmeter from the command line with the -n flag as you normally would. Also use the -t flag to point to the location of tests.jmx (which is inside C:\jmeter at the same relative location as on your host machine).

Note the message "Uncaught Exception java.lang.UnsatisfiedLinkError: C:\openjdk-13\bin\awt.dll: Can't find dependent libraries. See log file for details."

This message is unexpected mainly because the exception is uncaught. I'm also a little surprised to see mention of awt.dll, as I'm using the -n flag here.

The tests.jmx file is nothing special. It contains only a thread group with one instance of the config element "CSV Data Set Config".
Comment 1 Philippe Mouawad 2019-01-18 16:22:35 UTC
Can you try nightly build please ?
https://ci.apache.org/projects/jmeter/nightlies/

It is supposed to fix this issue, but I was not able to test it on your type of servers.

Thanks
Comment 2 Richard MacAleese 2019-01-18 17:34:15 UTC
I tested this and discovered a detail that I didn't notice for the initial bug report. It turns out this error does not occur if the CSV Data Set Config element is *outside* a Thread Group.

However, I need the CSV Data Set Config to be inside a Thread Group so I can add a Logic Controller to loop through the rows in the CSV file. Still in the nightly build, if the CSV Data Set Config element is inside a Thread Group, I get the UnsatisfiedLinkError.

This error still occurs in the 1/18 r1851594 nightly.
Comment 3 Philippe Mouawad 2019-01-18 17:42:57 UTC
can you attach jmeter.log with nightly ?
Possibly provide simple test with snd without issue (comment on csv dataset scoping) , use debugsampler.

Thanks
Comment 4 Philippe Mouawad 2019-01-19 16:19:19 UTC
(In reply to Philippe Mouawad from comment #3)
> can you attach jmeter.log with nightly ?
> Possibly provide simple test with snd without issue (comment on csv dataset
> scoping) , use debugsampler.
> 
> Thanks

Also please note you're using jdk13-ea, JMeter is tested against 8 and 11 , not 13-ea.
Use one of :
11.0.2-jdk-nanoserver-sac2016
8u191-jdk-nanoserver-sac2016

And provide log files.

Thanks
Comment 5 Richard MacAleese 2019-01-21 17:13:00 UTC
Thank you Phillipe for pointing out that the image I was using is Java 13. I switched to 8u191-jdk-nanoserver-sac2016, and the issue does not seem to occur there.

I am working on doing additional testing with the original JMX test plans that caused this behavior. I will update with my findings when complete.

It's been my experience in the past that the JVM is typically backwards compatible with bytecode generated in older versions of the JDK. Does JMeter track instances where features fail on newer versions of the JVM?
Comment 6 Philippe Mouawad 2019-01-21 17:22:37 UTC
(In reply to Richard MacAleese from comment #5)
> Thank you Phillipe for pointing out that the image I was using is Java 13. I
> switched to 8u191-jdk-nanoserver-sac2016, and the issue does not seem to
> occur there.

Can you also try Java 11 please with nano
> 
> I am working on doing additional testing with the original JMX test plans
> that caused this behavior. I will update with my findings when complete.
> 
> It's been my experience in the past that the JVM is typically backwards
> compatible with bytecode generated in older versions of the JDK. Does JMeter
> track instances where features fail on newer versions of the JVM?

I am not sure to understand ?
Can you clarify ?


Thanks
Comment 7 Philippe Mouawad 2019-01-21 20:29:32 UTC

*** This bug has been marked as a duplicate of bug 61486 ***