Hotspot compilers have been seen to use the abort() system call when resources are exhausted. e.g. logging "OutofMemoryError" and calling abort().
Tests have shown that setting a suitably large -XX:MaxPermSize= may be a reliable solution.
In the interests of reliability however, dynamic code compilation should not be calling abort().
If a compilation is attempted and cannot be completed, then the Java runtime should revert to interpreted mode.
Logging this fact somehow would be beneficial - in case performance questions are raised, and so that tuning parameters may be applied (without the unexpected downtime caused by an abort() ).
Example stacktrace, showing the kind of problem:
=======
current thread: t@11
=>[1] __sigprocmask(0x0, 0xfea01cd8, 0x0, 0x0, 0x0, 0x0), at 0xff369ab8
[2] _resetsig(0xff36c408, 0x0, 0x0, 0xfea03d78, 0xff37e000, 0x0), at 0xff35e4fc
[3] _sigon(0xfea03d78, 0xff3859a8, 0x6, 0xfea01dac, 0xfea03d78, 0xfea01df0), at 0xff35dc9c
[4] _thrp_kill(0x0, 0xb, 0x6, 0xff37e000, 0xb, 0xff2bc498), at 0xff360cb0
[5] qst(0x6, 0x0, 0x0, 0xffffffff, 0xff2bc404, 0xfea01f00), at 0xff24af98
[6] abort(0xff2b800c, 0xfea01f00, 0x0, 0xfffffff8, 0x4, 0xfea01f21), at 0xff235774
[7] os::abort(0x1, 0xfe796000, 0x1, 0xfe796000, 0xb7e08, 0xfea01f1c), at 0xfe6e836c
[8] report_error(0xee, 0xfea02792, 0xec, 0xfe747838, 0xfe7d1880, 0xfe796000), at 0xfe653258
[9] report_fatal(0xec, 0xfe796000, 0xfe76c288, 0xfea03144, 0xb7e08, 0x2b), at 0xfe652b28
[10] ciEnv::get_constant_by_index_impl(0x0, 0xb7e08, 0xfea03b30, 0x2b, 0xfe796000, 0xfea031b0), at 0xfe5d934c
[11] ciEnv::get_constant_by_index(0xfe7aa2a4, 0xb7e08, 0xfea03238, 0x2b, 0xfe796000, 0x23a330), at 0xfe5d90b8
[12] ciBytecodeStream::get_constant(0x23a330, 0xfea03b30, 0xfe796000, 0xfea032b0, 0xfea03348, 0x3), at 0xfe5d8fa0
[13] GraphBuilder::load_constant(0xfe796000, 0x91a80c, 0xfea03728, 0x91a804, 0x91a800, 0x91a7fc), at 0xfe5d8a50
[14] GraphBuilder::connect_to_end(0xfe7c39fc, 0xfe7c3a00, 0xfe7c3a04, 0xfe7c3a08, 0xfe796000, 0xfe7bb53c), at 0xfe5af2d4
[15] GraphBuilder::build_transitive_closure(0xfea03728, 0x91af48, 0xfe7c3a04, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2b48
[16] GraphBuilder::build_transitive_closure(0x91d308, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[17] GraphBuilder::build_transitive_closure(0x91d0a0, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[18] GraphBuilder::build_transitive_closure(0x91cacc, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[19] GraphBuilder::build_transitive_closure(0x91c8e0, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[20] GraphBuilder::build_transitive_closure(0x91c5ec, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[21] GraphBuilder::build_transitive_closure(0x91c1d8, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[22] GraphBuilder::build_transitive_closure(0x91bfd4, 0x4, 0x1, 0xfea03728, 0xfe796000, 0xfe7bb53c), at 0xfe5b2ba4
[23] GraphBuilder::GraphBuilder(0x91bcc4, 0x4, 0x1, 0x91a880, 0x91b164, 0xfea03728), at 0xfe5ae154
[24] IRScope::build_graph(0x91b1d0, 0xfea03a50, 0xffffffff, 0x8d5f40, 0xfe796000, 0xfe796000), at 0xfe5acea4
[25] IR::IR(0x91a83c, 0xfea03a50, 0x23a2e8, 0x91a870, 0x91a83c, 0x91a024), at 0xfe5ac0d8
[26] Compilation::build_hir(0x91a7e8, 0xfe796000, 0xfea03a50, 0xfea03b5c, 0x400, 0xfffffffc), at 0xfe5abeb8
[27] Compilation::compile_java_method(0xfea03a50, 0xfea039d4, 0xfea03a50, 0xb7e08, 0xfea03b5c, 0xfea03984), at 0xfe5aaf4c
[28] Compilation::Compilation(0xb9938, 0xfea03b30, 0x23a2e8, 0xffffffff, 0xb991c, 0xfe796000), at 0xfe5aa974
[29] Compiler::compile_method(0xb991c, 0xb98b0, 0xfe796000, 0x23a2e8, 0xffffffff, 0x23a2e8), at 0xfe5aa6d4
[30] CompileBroker::invoke_compiler_on_method(0x23a2e8, 0x0, 0xfe7b604c, 0x0, 0x0, 0xf5f), at 0xfe5a5fcc
[31] CompileBroker::compiler_thread_loop(0x28090, 0xb7e08, 0xfe796000, 0xfea03d18, 0xfe796000, 0xf94183a8), at 0xfe5a0430
[32] JavaThread::run(0xfe904000, 0xfe79feb4, 0xfe796000, 0x100000, 0xb7e08, 0x100000), at 0xfe590310
[33] _start(0xfe796000, 0xff325d18, 0x0, 0x5, 0x1, 0xfe401000), at 0xfe580134
dbx>
- duplicates
-
JDK-4707386 1.3.1_02 and 1.3.1_03 crashing with Fatal: unhandled ci exception
-
- Resolved
-