8028749: java -version crashes with 'fatal error: heap walk aborted with error 1'
authorrdurbin
Thu, 15 May 2014 10:44:20 -0700
changeset 24455 79b5204317a2
parent 24454 19b3c54faec3
child 24456 8c7933fa5a1f
8028749: java -version crashes with 'fatal error: heap walk aborted with error 1' Summary: check_heap() should only call HeapWalk() when HeapLock() is successful. Reviewed-by: ctornqvi, sla, dcubed
hotspot/src/os/windows/vm/os_windows.cpp
--- a/hotspot/src/os/windows/vm/os_windows.cpp	Thu May 15 09:25:27 2014 -0400
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Thu May 15 10:44:20 2014 -0700
@@ -5005,7 +5005,11 @@
     // 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) {