On Thu, 29 Jan 2026 06:20:57 GMT, Yasumasa Suenaga <[email protected]> wrote:
> TestJhsdbJstackMixedCore.java introduced in > [JDK-8374482](https://bugs.openjdk.org/browse/JDK-8374482) failed on Alpine > because musl-c does not provide the symbol of signal trampoline > (`__restore_rt` on Linux Kernel for AMD64) as following: > > > java.lang.RuntimeException: '<signal handler called>' missing from > stdout/stderr > at jdk.test.lib.process.OutputAnalyzer.shouldContain(OutputAnalyzer.java:253) > at TestJhsdbJstackMixedCore.runJstackMixed(TestJhsdbJstackMixedCore.java:62) > at TestJhsdbJstackMixedCore.main(TestJhsdbJstackMixedCore.java:74) > at > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > at > com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335) > at java.base/java.lang.Thread.run(Thread.java:1516) > > > It would success if debuginfo is installed, but it should be skipped if the > symbol is not available. > See JBS for details. test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackMixedCore.java line 71: > 69: // Check whether the symbol of signal trampoline is available. > 70: var libc = SATestUtils.getLibCPath(); > 71: if (!SATestUtils.isSymbolAvailable(libc, "__restore_rt")) { Do we have any reason to support the lookup of symbols not in libc? I'm just wondering if `SATestUtils.isSymbolAvailable()` should just take the symbol argument not the libc argument. test/lib/jdk/test/lib/SA/SATestUtils.java line 272: > 270: /** > 271: * Find library file what provides address of strlen(3), then > returns it as libc. > 272: * This method would work on Linux only. Suggestion: * Find library file that provides strlen(3), then returns it as libc. * This method works on Linux only. test/lib/jdk/test/lib/SA/SATestUtils.java line 300: > 298: var info = arena.allocate(structDLInfo); > 299: int result = (int)dladdr.invoke(ptrStrlen, info); > 300: if(result == 0){ Suggestion: if (result == 0) { test/lib/jdk/test/lib/SA/SATestUtils.java line 315: > 313: /** > 314: * Find debuginfo file from the library. > 315: * This method would work on Linux only. Suggestion: * Find debuginfo file for the library. * This method will work on Linux only. test/lib/jdk/test/lib/SA/SATestUtils.java line 345: > 343: } > 344: > 345: private static boolean isSymbolAvailableInternal(String lib, String > symbol) throws IOException { Should `lib` be named something more like `debugInfoPath`? test/lib/jdk/test/lib/SA/SATestUtils.java line 354: > 352: > 353: /** > 354: * This method would work on Linux only. Suggestion: * This method will work on Linux only. test/lib/jdk/test/lib/SA/SATestUtils.java line 356: > 354: * This method would work on Linux only. > 355: * Both "readelf" and "nm" have to be available. > 356: * @return true if given symbol is available on given lib. Suggestion: * @return true if given symbol is available in given lib. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748141842 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748107517 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748164779 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748145164 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748160452 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748135231 PR Review Comment: https://git.openjdk.org/jdk/pull/29480#discussion_r2748143118
