On Wed, 1 Nov 2023 18:35:00 GMT, Roger Riggs <rri...@openjdk.org> wrote:

>> `TestLoadLibraryDeadlock.java` test runs `LoadLibraryDeadlock` and wait for 
>> 5 seconds and then grab the output. Then run `jcmd` to dump the thread 
>> stacks in case there is a deadlock. The test ignores and swallows any 
>> exception which makes it hard to diagnose test issues. 
>> 
>> This PR simplifies the test to use `jdk.test.lib.process.ProcessTools` to 
>> launch `LoadLibraryDeadlock` test so that the output and error will be 
>> captured in the same way as other tools are run by this test.   Also update 
>> the test to propagate exceptions where appropriate.   This hopes to collect 
>> more information to diagnose the issue if this test fails next time.
>
> test/jdk/java/lang/ClassLoader/loadLibraryDeadlock/TestLoadLibraryDeadlock.java
>  line 115:
> 
>> 113:         Collections.addAll(commands, java);
>> 114:         Collections.addAll(commands, Utils.getTestJavaOpts());
>> 115:         Collections.addAll(commands, command);
> 
> The prose description talks about using ProcessTools, but the runCommand code 
> doesn't use ProcessTools.createTestJavaProcessBuilder. It could save a few 
> steps.

`runCommand` sets the working directory whereas 
`ProcessTools.createTestJavaProcessBuilder` does not.  Either way is okay with 
me if we want to use `createTestJavaProcessBuilder` (which will set the VM 
options).


+        ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder("-cp",
+                                                                      "a.jar" 
+ classPathSeparator +
+                                                                      "b.jar" 
+ classPathSeparator +
+                                                                      "c.jar",
+                                                                      
"-Djava.library.path=" + testLibraryPath,
+                                                                      
"LoadLibraryDeadlock")
+                                        .directory(new File(testClassPath));
+        OutputAnalyzer outputAnalyzer = ProcessTools.executeCommand(pb)
+                .shouldHaveExitValue(0);


or set the class path to the explicit path of the JAR files.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16459#discussion_r1379206601

Reply via email to