Skip to content
This repository has been archived by the owner. It is now read-only.
Browse files
8245128: Kitchensink fails with: assert(destination == (address)-1 ||…
… destination == entry) failed: b) MT-unsafe modification of inline cache

Fix too strong assertion by additionally considering races due to class unloading and redefinition.

Reviewed-by: eosterlund, kvn, coleenp, sspitsyn
  • Loading branch information
chhagedorn committed Jun 25, 2020
1 parent 31c511e commit 601e566b265eef942bbf16d950772820ff7b69ca
Showing 1 changed file with 3 additions and 1 deletion.
@@ -756,7 +756,9 @@ void CompiledDirectStaticCall::verify_mt_safe(const methodHandle& callee, addres
"a) MT-unsafe modification of inline cache");

address destination = jump->jump_destination();
assert(destination == (address)-1 || destination == entry,
assert(destination == (address)-1 || destination == entry
|| old_method == NULL || !old_method->method_holder()->is_loader_alive() // may have a race due to class unloading.
|| old_method->is_old(), // may be race patching deoptimized nmethod due to redefinition.
"b) MT-unsafe modification of inline cache");
#endif // !PRODUCT

0 comments on commit 601e566

Please sign in to comment.