RFR(XS): 8232905: JFR fails with assertion: assert(t->unflushed_size() == 0) failed: invariant
Markus Gronlund
markus.gronlund at oracle.com
Wed Nov 6 17:45:07 UTC 2019
Greetings,
Please review the following changeset.
Bug: https://bugs.openjdk.java.net/browse/JDK-8232905
Webrev: http://cr.openjdk.java.net/~mgronlun/8232905/webrev01/
Testing: jdk_jfr
Summary:
When running in-memory recordings, and free space is becoming sparse, the oldest buffers will eventually need be reused. This is done by discarding data from the age list and then re-publicizing the buffer. The age list can also contain dynamically allocated (transient) buffers that have been released. If such a buffer is found during iteration, it is sent to mspace_release_full(buffer) for deallocation. The function mspace_release_full(buffer) asserts that there is no outstanding data in the buffer being passed for deallocation. When tallying the data to be discarded, the method buffer->discard() should be invoked instead of buffer->unflushed_size() to ensure no data lingers in the buffer when it schedules for deallocation.
Thanks
Markus
More information about the hotspot-jfr-dev
mailing list