hotspot/src/share/vm/runtime/os.cpp
changeset 22823 40b2c6c30123
parent 22819 f88b9c394e42
parent 18943 7d0ef675e808
child 22828 17ecb098bc1e
--- a/hotspot/src/share/vm/runtime/os.cpp	Fri Jul 26 10:12:15 2013 +0200
+++ b/hotspot/src/share/vm/runtime/os.cpp	Thu Aug 01 17:25:10 2013 -0700
@@ -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.