mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8059100: SIGSEGV VirtualMemoryTracker::remove_released_region
Disallow increasing native memory tracking level Reviewed-by: hseigel, ctornqvi, gtriantafill
This commit is contained in:
parent
fe03f41db8
commit
3a86f9cd27
12 changed files with 134 additions and 119 deletions
|
@ -443,26 +443,28 @@ bool VirtualMemoryTracker::remove_released_region(address addr, size_t size) {
|
|||
bool VirtualMemoryTracker::walk_virtual_memory(VirtualMemoryWalker* walker) {
|
||||
assert(_reserved_regions != NULL, "Sanity check");
|
||||
ThreadCritical tc;
|
||||
LinkedListNode<ReservedMemoryRegion>* head = _reserved_regions->head();
|
||||
while (head != NULL) {
|
||||
const ReservedMemoryRegion* rgn = head->peek();
|
||||
if (!walker->do_allocation_site(rgn)) {
|
||||
return false;
|
||||
// Check that the _reserved_regions haven't been deleted.
|
||||
if (_reserved_regions != NULL) {
|
||||
LinkedListNode<ReservedMemoryRegion>* head = _reserved_regions->head();
|
||||
while (head != NULL) {
|
||||
const ReservedMemoryRegion* rgn = head->peek();
|
||||
if (!walker->do_allocation_site(rgn)) {
|
||||
return false;
|
||||
}
|
||||
head = head->next();
|
||||
}
|
||||
head = head->next();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Transition virtual memory tracking level.
|
||||
bool VirtualMemoryTracker::transition(NMT_TrackingLevel from, NMT_TrackingLevel to) {
|
||||
if (from == NMT_minimal) {
|
||||
assert(to == NMT_summary || to == NMT_detail, "Just check");
|
||||
VirtualMemorySummary::reset();
|
||||
} else if (to == NMT_minimal) {
|
||||
assert (from != NMT_minimal, "cannot convert from the lowest tracking level to anything");
|
||||
if (to == NMT_minimal) {
|
||||
assert(from == NMT_summary || from == NMT_detail, "Just check");
|
||||
// Clean up virtual memory tracking data structures.
|
||||
ThreadCritical tc;
|
||||
// Check for potential race with other thread calling transition
|
||||
if (_reserved_regions != NULL) {
|
||||
delete _reserved_regions;
|
||||
_reserved_regions = NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue