--- old/src/hotspot/share/classfile/symbolTable.cpp 2018-08-23 12:14:30.000000000 -0500 +++ new/src/hotspot/share/classfile/symbolTable.cpp 2018-08-23 12:14:29.000000000 -0500 @@ -134,7 +134,7 @@ void SymbolTable::delete_symbol(Symbol* sym) { if (sym->refcount() == PERM_REFCOUNT) { - MutexLocker ml(SymbolTable_lock); // Protect arena + MutexLockerEx ml(SymbolArena_lock, Mutex::_no_safepoint_check_flag); // Protect arena // Deleting permanent symbol should not occur very often (insert race condition), // so log it. log_trace_symboltable_helper(sym, "Freeing permanent symbol"); @@ -197,7 +197,7 @@ assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted"); } else { // Allocate to global arena - MutexLocker ml(SymbolTable_lock); // Protect arena + MutexLockerEx ml(SymbolArena_lock, Mutex::_no_safepoint_check_flag); // Protect arena sym = new (len, arena(), THREAD) Symbol((const u1*)name, len, PERM_REFCOUNT); } return sym;