1163 1164 // needs to remove object in file system 1165 AttachListener::abort(); 1166 1167 // flush buffered output, finish log files 1168 ostream_abort(); 1169 1170 // Check for abort hook 1171 abort_hook_t abort_hook = Arguments::abort_hook(); 1172 if (abort_hook != NULL) { 1173 abort_hook(); 1174 } 1175 } 1176 1177 // Note: os::abort() might be called very early during initialization, or 1178 // called from signal handler. Before adding something to os::abort(), make 1179 // sure it is async-safe and can handle partially initialized VM. 1180 void os::abort(bool dump_core, void* siginfo, const void* context) { 1181 os::shutdown(); 1182 if (dump_core) { 1183 #ifndef PRODUCT 1184 fdStream out(defaultStream::output_fd()); 1185 out.print_raw("Current thread is "); 1186 char buf[16]; 1187 jio_snprintf(buf, sizeof(buf), UINTX_FORMAT, os::current_thread_id()); 1188 out.print_raw_cr(buf); 1189 out.print_raw_cr("Dumping core ..."); 1190 #endif 1191 ::abort(); // dump core 1192 } 1193 1194 ::exit(1); 1195 } 1196 1197 // Die immediately, no exit hook, no abort hook, no cleanup. 1198 // Dump a core file, if possible, for debugging. 1199 void os::die() { 1200 if (TestUnresponsiveErrorHandler && !CreateCoredumpOnCrash) { 1201 // For TimeoutInErrorHandlingTest.java, we just kill the VM 1202 // and don't take the time to generate a core file. 1203 os::signal_raise(SIGKILL); 1204 } else { 1205 ::abort(); 1206 } 1207 } 1208 1209 intx os::current_thread_id() { 1210 return (intx)pthread_self(); | 1163 1164 // needs to remove object in file system 1165 AttachListener::abort(); 1166 1167 // flush buffered output, finish log files 1168 ostream_abort(); 1169 1170 // Check for abort hook 1171 abort_hook_t abort_hook = Arguments::abort_hook(); 1172 if (abort_hook != NULL) { 1173 abort_hook(); 1174 } 1175 } 1176 1177 // Note: os::abort() might be called very early during initialization, or 1178 // called from signal handler. Before adding something to os::abort(), make 1179 // sure it is async-safe and can handle partially initialized VM. 1180 void os::abort(bool dump_core, void* siginfo, const void* context) { 1181 os::shutdown(); 1182 if (dump_core) { 1183 ::abort(); // dump core 1184 } 1185 1186 ::exit(1); 1187 } 1188 1189 // Die immediately, no exit hook, no abort hook, no cleanup. 1190 // Dump a core file, if possible, for debugging. 1191 void os::die() { 1192 if (TestUnresponsiveErrorHandler && !CreateCoredumpOnCrash) { 1193 // For TimeoutInErrorHandlingTest.java, we just kill the VM 1194 // and don't take the time to generate a core file. 1195 os::signal_raise(SIGKILL); 1196 } else { 1197 ::abort(); 1198 } 1199 } 1200 1201 intx os::current_thread_id() { 1202 return (intx)pthread_self(); |