8028749: java -version crashes with 'fatal error: heap walk aborted with error 1'

Check_heap() should only call HeapWalk() when HeapLock() is successful.

Reviewed-by: ctornqvi, sla, dcubed
This commit is contained in:
Ron Durbin 2014-05-15 10:44:20 -07:00
parent ca501f6b00
commit 54da05d840

View File

@ -5005,7 +5005,11 @@ bool os::check_heap(bool force) {
// wrong; at these points, eax contains the address of the offending block (I think).
// To get to the exlicit error message(s) below, just continue twice.
HANDLE heap = GetProcessHeap();
{ HeapLock(heap);
// If we fail to lock the heap, then gflags.exe has been used
// or some other special heap flag has been set that prevents
// locking. We don't try to walk a heap we can't lock.
if (HeapLock(heap) != 0) {
PROCESS_HEAP_ENTRY phe;
phe.lpData = NULL;
while (HeapWalk(heap, &phe) != 0) {