< prev index next >

src/hotspot/share/utilities/vmError.cpp

Print this page

        

@@ -1383,13 +1383,28 @@
         st->flush();
         // Watcherthread is about to call os::die. Lets just wait.
         os::infinite_sleep();
       } else {
         // Crash or assert during error reporting. Lets continue reporting with the next step.
-        jio_snprintf(buffer, sizeof(buffer),
-           "[error occurred during error reporting (%s), id 0x%x]",
-                   _current_step_info, _id);
+        stringStream ss(buffer, sizeof(buffer));
+        // Note: this string does get parsed by a number of jtreg tests,
+        // see hotspot/jtreg/runtime/ErrorHandling.
+        ss.print("[error occurred during error reporting (%s), id 0x%x",
+                   _current_step_info, id);
+        char signal_name[64];
+        if (os::exception_name(id, signal_name, sizeof(signal_name))) {
+          ss.print(", %s (0x%x) at pc=" PTR_FORMAT, signal_name, id, p2i(pc));
+        } else {
+          if (should_report_bug(id)) {
+            ss.print(", Internal Error (%s:%d)",
+              filename == NULL ? "??" : filename, lineno);
+          } else {
+            ss.print(", Out of Memory Error (%s:%d)",
+              filename == NULL ? "??" : filename, lineno);
+          }
+        }
+        ss.print("]");
         st->print_raw_cr(buffer);
         st->cr();
       }
     }
   }
< prev index next >