8011064: Some tests have failed with SIGSEGV on arm-hflt on build b82
authorjprovino
Tue, 28 May 2013 11:32:46 -0400
changeset 17838 89e464689cb1
parent 17822 fd4394d5ce22
child 17839 a4b5f98d840f
8011064: Some tests have failed with SIGSEGV on arm-hflt on build b82 Summary: NMT_detail is only supported when frame pointers are not omitted (-fno-omit-frame-pointer). Reviewed-by: dholmes, cjplummer
hotspot/src/share/vm/services/memTracker.cpp
hotspot/src/share/vm/utilities/globalDefinitions.hpp
--- a/hotspot/src/share/vm/services/memTracker.cpp	Fri May 24 09:35:10 2013 -0700
+++ b/hotspot/src/share/vm/services/memTracker.cpp	Tue May 28 11:32:46 2013 -0400
@@ -34,6 +34,7 @@
 #include "services/memReporter.hpp"
 #include "services/memTracker.hpp"
 #include "utilities/decoder.hpp"
+#include "utilities/defaultStream.hpp"
 #include "utilities/globalDefinitions.hpp"
 
 bool NMT_track_callsite = false;
@@ -77,7 +78,15 @@
   if (strcmp(option_line, "=summary") == 0) {
     _tracking_level = NMT_summary;
   } else if (strcmp(option_line, "=detail") == 0) {
-    _tracking_level = NMT_detail;
+    // detail relies on a stack-walking ability that may not
+    // be available depending on platform and/or compiler flags
+    if (PLATFORM_NMT_DETAIL_SUPPORTED) {
+      _tracking_level = NMT_detail;
+    } else {
+      jio_fprintf(defaultStream::error_stream(),
+        "NMT detail is not supported on this platform.  Using NMT summary instead.");
+      _tracking_level = NMT_summary;
+    }
   } else if (strcmp(option_line, "=off") != 0) {
     vm_exit_during_initialization("Syntax error, expecting -XX:NativeMemoryTracking=[off|summary|detail]", NULL);
   }
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Fri May 24 09:35:10 2013 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Tue May 28 11:32:46 2013 -0400
@@ -380,6 +380,14 @@
 # include "globalDefinitions_ppc.hpp"
 #endif
 
+/*
+ * If a platform does not support NMT_detail
+ * the platform specific globalDefinitions (above)
+ * can set PLATFORM_NMT_DETAIL_SUPPORTED to false
+ */
+#ifndef PLATFORM_NMT_DETAIL_SUPPORTED
+#define PLATFORM_NMT_DETAIL_SUPPORTED true
+#endif
 
 // The byte alignment to be used by Arena::Amalloc.  See bugid 4169348.
 // Note: this value must be a power of 2