Commit 7585b91b authored by Alex Light's avatar Alex Light
Browse files

Prevent races with GC when transferring objects between threads

We could have races with the GC when JVMTI code transfers a local
reference from one thread to another. This race would happen if a GC
was currently underway causing an unmoved reference to be transferred
to a thread that has already fixed up all of its references. This
meant that the receiving thread would now have a reference belonging
to the from-space on its stack.

This could cause memory errors and CHECK failures.

To fix this we make sure to run all checkpoints where local references
might be transferred in a GC-critical-section.

We also needed to fix a too-strict check in the method verifier where
we were incorrectly asserting that suspension be allowable when in
fact it was not necessary in all cases.

Test: ./test.py --host -j50
Bug: 67838964

Change-Id: Ib9166cc233d3c1b488864c0aff33246a3f99e436
parent 0d2b2ad6
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment