8232905: JFR fails with assertion: assert(t->unflushed_size() == 0) failed: invariant

Reviewed-by: egahlin
This commit is contained in:
Markus Grönlund 2019-11-07 15:56:56 +01:00
parent 9ec96c1117
commit 24bff84cb3

View File

@ -432,18 +432,17 @@ void JfrStorage::discard_oldest(Thread* thread) {
assert(oldest_age_node->identity() == NULL, "invariant");
BufferPtr const buffer = oldest_age_node->retired_buffer();
assert(buffer->retired(), "invariant");
discarded_size += buffer->unflushed_size();
discarded_size += buffer->discard();
assert(buffer->unflushed_size() == 0, "invariant");
num_full_post_discard = control().decrement_full();
mspace_release_full(oldest_age_node, _age_mspace);
if (buffer->transient()) {
mspace_release_full(buffer, _transient_mspace);
mspace_release_full(oldest_age_node, _age_mspace);
continue;
} else {
mspace_release_full(oldest_age_node, _age_mspace);
buffer->reinitialize();
buffer->release(); // publish
break;
}
buffer->reinitialize();
buffer->release(); // publish
break;
}
JfrBuffer_lock->unlock();
const size_t number_of_discards = num_full_pre_discard - num_full_post_discard;