summaryrefslogtreecommitdiff
path: root/runtime/jni/java_vm_ext.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/jni/java_vm_ext.cc')
-rw-r--r--runtime/jni/java_vm_ext.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/jni/java_vm_ext.cc b/runtime/jni/java_vm_ext.cc
index 3012539b3c..2c17537636 100644
--- a/runtime/jni/java_vm_ext.cc
+++ b/runtime/jni/java_vm_ext.cc
@@ -358,6 +358,11 @@ class Libraries {
int retries = 0;
static constexpr int MAX_RETRIES = 5;
while (!Locks::jni_libraries_lock_->ExclusiveTryLock(self)) {
+ if (Runtime::Current()->IsZygote()) {
+ // Do not risk deferring to the child processes.
+ Locks::jni_libraries_lock_->ExclusiveLock(self);
+ break;
+ }
if (++retries > MAX_RETRIES) {
// We do not want to block indefinitely here, for fear of timeouts. See b/374209523.
LOG(WARNING) << "Deferring native library unloading due to contention";