Skip to content

Commit 4820bdd

Browse files
committed
[GR-41267] Fix memory corruption from wrong ForkJoinPool.poolIds offset.
PullRequest: graal/12733
2 parents 1978e1c + bd2a47a commit 4820bdd

File tree

2 files changed

+3
-9
lines changed

2 files changed

+3
-9
lines changed

compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/UnsafeBooleanAccessTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class UnsafeBooleanAccessTest extends GraalCompilerTest {
4242
static {
4343
try {
4444
Field staticField = UnsafeBooleanAccessTest.class.getDeclaredField("onHeapMemory");
45-
onHeapMemoryBase = getStaticFieldOffset(staticField);
45+
onHeapMemoryBase = getStaticFieldBase(staticField);
4646
onHeapMemoryOffset = getStaticFieldOffset(staticField);
4747
} catch (Exception e) {
4848
throw new RuntimeException(e);

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/RecomputedFields.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
//Checkstyle: stop
2828

2929
import static com.oracle.svm.core.annotate.RecomputeFieldValue.Kind.AtomicFieldUpdaterOffset;
30+
import static com.oracle.svm.core.annotate.RecomputeFieldValue.Kind.FieldOffset;
3031
import static com.oracle.svm.core.annotate.RecomputeFieldValue.Kind.Reset;
3132

3233
import java.lang.ref.ReferenceQueue;
@@ -337,6 +338,7 @@ public static int getCommonPoolParallelism() {
337338
private static Unsafe U;
338339

339340
@Alias @TargetElement(onlyWith = JDK19OrLater.class) //
341+
@RecomputeFieldValue(kind = FieldOffset, name = "poolIds") //
340342
private static long POOLIDS;
341343

342344
@Substitute
@@ -425,14 +427,6 @@ final class Target_java_util_concurrent_ForkJoinTask_JDK11OrEarlier {
425427
final class Target_java_util_concurrent_ForkJoinTask_ExceptionNode {
426428
}
427429

428-
@TargetClass(value = java.util.concurrent.ForkJoinTask.class, onlyWith = JDK19OrLater.class)
429-
final class Target_java_util_concurrent_ForkJoinTask_JDK19OrLater {
430-
@Alias @RecomputeFieldValue(kind = Kind.FieldOffset, name = "status") //
431-
static long STATUS;
432-
@Alias @RecomputeFieldValue(kind = Kind.FieldOffset, name = "aux") //
433-
static long AUX;
434-
}
435-
436430
/** Dummy class to have a class with the file's name. */
437431
public final class RecomputedFields {
438432
}

0 commit comments

Comments
 (0)