RFR: 8299329: Assertion failure with fastdebug build when trying to use CDS without classpath

Ashutosh Mehra duke at openjdk.org
Fri Dec 23 17:19:18 UTC 2022


It appears longest_common_app_classpath_prefix_len() is not returning correct value when there is no file separator in the path being searched backwards. Instead of returning 0 it return 1.

In case of empty classpath, it can result in assertion failure in check_paths():

`assert(strlen(rp_array->at(i)) > (size_t)runtime_prefix_len, "sanity");`

It can also result in incorrectly validating the app classpaths if they only differ by first character. Eg:

Dump time:
  -cp hello.jar
Run time:
  -cp mello.jar

This would not result in classpath mismatch!

This fix updates longest_common_app_classpath_prefix_len() to return 0 if no file separator character is found.

Signed-off-by: Ashutosh Mehra <asmehra at redhat.com>

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

Commit messages:
 - 8299329: Assertion failure with fastdebug build when trying to use CDS without classpath

Changes: https://git.openjdk.org/jdk/pull/11781/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11781&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8299329
  Stats: 13 lines in 1 file changed: 7 ins; 1 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/11781.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11781/head:pull/11781

PR: https://git.openjdk.org/jdk/pull/11781


More information about the hotspot-runtime-dev mailing list