--- 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.