hotspot/src/share/vm/runtime/os.cpp
changeset 18943 7d0ef675e808
parent 18086 f44cf213a775
child 19694 84bcddefd0d7
child 19553 9bbd930be684
child 22823 40b2c6c30123
--- a/hotspot/src/share/vm/runtime/os.cpp	Thu Jul 18 06:47:15 2013 -0400
+++ b/hotspot/src/share/vm/runtime/os.cpp	Wed Jul 17 13:48:15 2013 +0200
@@ -595,6 +595,22 @@
   NOT_PRODUCT(inc_stat_counter(&num_mallocs, 1));
   NOT_PRODUCT(inc_stat_counter(&alloc_bytes, size));
 
+#ifdef ASSERT
+  // checking for the WatcherThread and crash_protection first
+  // since os::malloc can be called when the libjvm.{dll,so} is
+  // first loaded and we don't have a thread yet.
+  // try to find the thread after we see that the watcher thread
+  // exists and has crash protection.
+  WatcherThread *wt = WatcherThread::watcher_thread();
+  if (wt != NULL && wt->has_crash_protection()) {
+    Thread* thread = ThreadLocalStorage::get_thread_slow();
+    if (thread == wt) {
+      assert(!wt->has_crash_protection(),
+          "Can't malloc with crash protection from WatcherThread");
+    }
+  }
+#endif
+
   if (size == 0) {
     // return a valid pointer if size is zero
     // if NULL is returned the calling functions assume out of memory.