mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8235829: graal crashes with Zombie.java test
Start ServiceThread before compiler threads, and run nmethod barriers for zgc before adding to the service thread queues, or posting events from the java thread. Reviewed-by: pliden, dholmes, rehn
This commit is contained in:
parent
f58a8cbed2
commit
eb6beeac94
12 changed files with 91 additions and 32 deletions
|
@ -1567,6 +1567,12 @@ void nmethod::flush_dependencies(bool delete_immediately) {
|
|||
// Transfer information from compilation to jvmti
|
||||
void nmethod::post_compiled_method_load_event(JvmtiThreadState* state) {
|
||||
|
||||
// Don't post this nmethod load event if it is already dying
|
||||
// because the sweeper might already be deleting this nmethod.
|
||||
if (is_not_entrant() && can_convert_to_zombie()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This is a bad time for a safepoint. We don't want
|
||||
// this nmethod to get unloaded while we're queueing the event.
|
||||
NoSafepointVerifier nsv;
|
||||
|
@ -1585,15 +1591,16 @@ void nmethod::post_compiled_method_load_event(JvmtiThreadState* state) {
|
|||
if (JvmtiExport::should_post_compiled_method_load()) {
|
||||
// Only post unload events if load events are found.
|
||||
set_load_reported();
|
||||
// Keep sweeper from turning this into zombie until it is posted.
|
||||
mark_as_seen_on_stack();
|
||||
|
||||
// If a JavaThread hasn't been passed in, let the Service thread
|
||||
// (which is a real Java thread) post the event
|
||||
JvmtiDeferredEvent event = JvmtiDeferredEvent::compiled_method_load_event(this);
|
||||
if (state == NULL) {
|
||||
// Execute any barrier code for this nmethod as if it's called, since
|
||||
// keeping it alive looks like stack walking.
|
||||
run_nmethod_entry_barrier();
|
||||
ServiceThread::enqueue_deferred_event(&event);
|
||||
} else {
|
||||
// This enters the nmethod barrier outside in the caller.
|
||||
state->enqueue_event(&event);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue