Harmony
  1. Harmony
  2. HARMONY-1722

notify() in synchronized section makes wait(long) wait forever

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: DRLVM
    • Labels:
      None
    • Environment:
      Windows XP IA32
    • Estimated Complexity:
      Unknown

      Description

      DRLVM svn = r453182, (Oct 5 2006), Windows/ia32/msvc 1310, debug build
      with jit and interpreter (-Xint)

      The following test:

      public class Test {
      public static void main(String args[]) throws Exception {
      new Thread() {
      public void run() {
      while (true) {
      System.err.println("entering cycle");
      synchronized (this) {
      try

      { System.err.println("before wait"); wait(50); System.err.println("after wait"); notify(); }

      catch (InterruptedException e)

      { e.printStackTrace(); }

      }
      System.err.println("after cycle");
      }
      }
      }.start();
      }

      }

      Prints in RI:

      entering cycle
      before wait
      after wait
      after cycle
      entering cycle
      before wait
      after wait
      after cycle

      endlessly

      in DRL:

      entering cycle
      before wait
      after wait
      after cycle
      entering cycle
      before wait
      <test hangs>

      If we remove notify() from loop, the loop will become infinite

        Issue Links

          Activity

            People

            • Assignee:
              Alexey Petrenko
              Reporter:
              Anton Luht
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development