Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-1833

[DRLVM] deadlock during finalization

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: DRLVM
    • Labels:
      None
    • Environment:
      SLES 9 32-bit SP2; CPU 2xXeon x64
      gcc 3.3.3 drlvm debug build
    • Patch Info:
      Patch Available

      Description

      The classlib tests hang sporadically, usually in JNDI module when running all classlib unit tests (single runs of JNDI alone always ok).

      Investigation shows that there are deadlocks happening between main thread (MT) and finalizer thread (FT):
      1) MT performs classloading, it grabs ClassLoader::_lock;
      2) GC happens, FinalizerThread.startFinalization() is called, FT activates;
      3) FT invokes some finalize() method, compilation starts and grabs g_compileLock;
      4) FT waits for ClassLoader::_lock to allocate code_chunk_info;
      5) MT proceeds to compilation of FinalizerThread.spawnBalanceThreads() and waits for g_compileLock;

        Attachments

        1. H-1833.patch
          4 kB
          Alexey Varlamov
        2. H-1833.patch
          4 kB
          Alexey Varlamov

          Activity

            People

            • Assignee:
              geir Geir Magnusson Jr
              Reporter:
              varlax Alexey Varlamov
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: