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

vm_exit_out_of_memory attempts to allocate memory

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.4.0
    • hotspot
    • None
    • beta
    • sparc
    • solaris_8

      If C2 fails while in product mode, we eventually get an OutOfMemory
      error while trying to exit the runtime. Unfortunately, we first try
      to allocate more memory, causing lots of recursion.

      Running with merlin_beta as of 1/23/01:

      When run with -server -Xcomp -Xbatch, there's a matcher error, and
      we nicely dump core. However, in product mode, we loop and thrash
      and eventually die (I let it run for an hour and it hadn't finished
      yet). While we need to fix the underlying C2 problem, we also need
      to be able to exit cleanly if an error exists.

      I attached dbx to the process, and here's what I found:

      vm_exit_out_of_memory calls get_thread_name() which does this:
      const char* str = UNICODE::as_utf8((jchar*) name->base(T_CHAR), name->length());

      as_utf8 creates a NEW_RESOURCE_ARRAY... and off we go.

      The dbx stack is appended. Check out how deeply we've recursed.

      <repeats forever>
        [20199] UNICODE::as_utf8(0xf3a312bc, 0xe, 0xf2000, 0xfe49e000, 0xd4fa8,
      0xf20002cc), at 0xfe140150
        [20200] vm_exit_out_of_memory(0xd4fa8, 0xfe50a4cc, 0xfe49e000, 0x7ff4, 0x0,
      0x0), at 0xfe32eca0
        [20201] Chunk::operator new(0x28888, 0x288a0, 0x288b8, 0xfe49e000, 0x0,
      0x7ff4), at 0xfe0b8564
        [20202] Arena::grow(0x7fec, 0xfe49e000, 0xa9d3c1f0, 0x10, 0xd3410, 0x1), at
      0xfe0b8704
        [20203] UNICODE::as_utf8(0xf3a312bc, 0xe, 0xf2000, 0xfe49e000, 0xd4fa8,
      0xf2000464), at 0xfe140150
        [20204] vm_exit_out_of_memory(0xd4fa8, 0xfe50a4cc, 0xfe49e000, 0x7ff4,
      0xf07fc170, 0x2), at 0xfe32eca0
        [20205] Chunk::operator new(0x28888, 0x288a0, 0x288b8, 0xfe49e000, 0x0,
      0x7ff4), at 0xfe0b8564
        [20206] Arena::grow(0x7fec, 0xfe49e000, 0xf07f4200, 0x10, 0xf2001434,
      0xf200059c), at 0xfe0b8704
        [20207] Node::out_grow(0x0, 0x0, 0xf07fc1c4, 0xb78670, 0xf07fc188,
      0xf07fc1b4), at 0xfe0bc52c
        [20208] PhaseIdealLoop::split_up(0x6ee1c9, 0xf07fc1c4, 0x6ed54c, 0x6ed894,
      0x0, 0xf07fc188), at 0xfe12a874

            jloizeausunw Jane Loizeaux (Inactive)
            jloizeausunw Jane Loizeaux (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: