Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4682937

Hotspot compilers should not call abort().

XMLWordPrintable

    • sparc
    • solaris_8


      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>

            hhuangsunw Hui Huang (Inactive)
            kevinw Kevin Walls
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: