diff --git a/ddprof-lib/src/main/java/com/datadoghq/profiler/Platform.java b/ddprof-lib/src/main/java/com/datadoghq/profiler/Platform.java index 51c72132..51d7df3f 100644 --- a/ddprof-lib/src/main/java/com/datadoghq/profiler/Platform.java +++ b/ddprof-lib/src/main/java/com/datadoghq/profiler/Platform.java @@ -309,6 +309,11 @@ public static boolean isZing() { return System.getProperty("java.vm.name").contains("Zing"); } + public static boolean isGraal() { + String vendor = System.getProperty("java.vendor.version"); + return vendor != null && vendor.contains(" GraalVM "); + } + public static String getLangVersion() { return String.valueOf(JAVA_VERSION.major); } diff --git a/ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/ContendedWallclockSamplesTest.java b/ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/ContendedWallclockSamplesTest.java index 0adbfd81..44b7e362 100644 --- a/ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/ContendedWallclockSamplesTest.java +++ b/ddprof-test/src/test/java/com/datadoghq/profiler/wallclock/ContendedWallclockSamplesTest.java @@ -52,9 +52,11 @@ public void after() { @ValueSource(strings = {"vm", "vmx", "fp", "dwarf"}) public void test(@CStack String cstack) { // Skip test entirely on unsupported JVMs (don't use assumeFalse which gets retried) - if (Platform.isZing() || Platform.isJ9()) { + if (Platform.isZing() || Platform.isJ9() || + (isInCI() && isAsan() && Platform.isGraal() && Platform.isAarch64() && "vm".equals(cstack))) { return; } + // Running vm stackwalker tests on JVMCI (Graal), JDK 24, aarch64 and with a sanitizer is crashing in a weird place // This looks like the sanitizer instrumentation is breaking the longjump based crash recovery :( String config = System.getProperty("ddprof_test.config");