RFR: 8266310: deadlock while loading the JNI code [v8]

Mandy Chung mchung at openjdk.java.net
Thu Jun 17 18:51:34 UTC 2021


On Thu, 17 Jun 2021 18:12:19 GMT, Aleksei Voitylov <avoitylov at openjdk.org> wrote:

>> test/jdk/java/lang/ClassLoader/loadLibraryDeadlock/TestLoadLibraryDeadlock.java line 95:
>> 
>>> 93:         Collections.addAll(args, "cvf", Paths.get(testClassPath, outputJar).toString());
>>> 94:         for (String c : classes) {
>>> 95:             Collections.addAll(args, "-C", testClassPath, c);
>> 
>> I believe only one single `-C` option is good enough for this case since the classes are all in one single directory.
>
> Contrary to the man which says "-C DIR Changes the specified directory and includes the files specified at the end of the command line.", here is how it works:
> 
> 
> bash-3.2$ find .
> .
> ./dir
> ./dir/B.class
> ./dir/A.class
> bash-3.2$ jar cvf a.jar -C dir A.class B.class
> B.class : no such file or directory
> added manifest
> adding: A.class(in = 176) (out= 149)(deflated 15%)
> 
> 
> and no jar is produced. Lines 614 and 647 of src/jdk.jartool/share/classes/sun/tools/jar/Main.java explain why. IIRC the intent was to mimic tar -C behaviour where -C applies to all files that follow, but jar does not work that way currently. 
> 
> It's probably worth reaching consensus that it's a problem worth fixing first (a scary one to fix by the way, provided how many tools could rely on the current behaviour). Alternatively, man could be adjusted to reflect the current order. I could work on that as a follow up.

You are probably right.  I have no more comment.

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

PR: https://git.openjdk.java.net/jdk/pull/3976


More information about the core-libs-dev mailing list