aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/mips/CodegenFactory.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2011-10-14 14:36:46 -0700
committerElliott Hughes <enh@google.com>2011-10-14 15:34:14 -0700
commit21fefbaa3874c42f8a017c4794add2d7c337643a (patch)
treeae7c945c505867c4c98aa8003bea6813a7d299a9 /vm/compiler/codegen/mips/CodegenFactory.cpp
parent98909fbdd4a2bfbb7af0eb62403d7a6ab9f84457 (diff)
Avoid deadlock.
dvmIsHeapAddress is the pointer validity checker for use outside the GC. If it doesn't take the heap lock, it risks looking at data structures that are changing under its feet. If it does take the heap lock, it risks deadlock between a thread doing an explicit GC and the signal catcher trying to dump threads (causing the GC thread to be suspended while holding the heap lock). Calling back into managed code while holding the heap lock and with other threads resumed sounds like an inherently bad idea to me, but that's a battle for another day. With this change, we can handle SIGQUIT while we're in ReferenceQueue.add as a result of an explicit GC in a system doing concurrent collections, so the only known problem is fixed. Bug: 5425802 Change-Id: I42d434d5ea3ffbcb77a4c544b81b08a4c7364a16
Diffstat (limited to 'vm/compiler/codegen/mips/CodegenFactory.cpp')
0 files changed, 0 insertions, 0 deletions