summaryrefslogtreecommitdiff
path: root/runtime/gc/reference_processor.h
diff options
context:
space:
mode:
author Lokesh Gidra <lokeshgidra@google.com> 2021-08-17 15:55:40 -0700
committer Lokesh Gidra <lokeshgidra@google.com> 2021-08-18 16:58:57 +0000
commit555eefef9a27995ef341cdf44ed60c61953e2e3f (patch)
tree4f8ee1eb27d9b559ea85ff54a80d9e5e4aaff9ca /runtime/gc/reference_processor.h
parent59033773f2fc900c7be96b4e513bee62ad3342af (diff)
Replace weak-ref access disable checkpoint with STW pause
Disabling weak-ref access in ConcurrentCopying collector can lead to deadlocks. For instance, if mutator M1 acquires W1 mutex and then participates in the checkpoint and then gets blocked in getReferent(), waiting for the gc-thread to finish reference processing. Mutator M2 waits for M1 to release W1 so that it can acquire the mutex before participating in the checkpoint. On the other hand, GC-thread waits for M2 to finish checkpoint. A STW pause avoids the deadlock by ensuring that mutators are not blocked on weak-ref access before the pause, and GC-thread can make progress after the pause in reference processing. Bug: 195336624 Bug: 195261575 Test: art/test/testrunner/testrunner.py Change-Id: I03d6bcd4d53f37ec84064edd8292951d30f48eaf
Diffstat (limited to 'runtime/gc/reference_processor.h')
0 files changed, 0 insertions, 0 deletions