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

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

    Details

    • Type: Bug
    • Status: Closed
    • Priority: 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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: