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

race condition with clipboard modalWait calls

XMLWordPrintable

    • sparc
    • solaris_2.5.1


      Name: mf23781 Date: 12/01/97

      This bug was discovered on AIX, but will also apply to Solaris.
      It causes a hang. ** DEFECT 3881 ***************

      The code in src/unix/sun/awt_Selection.c that does modal waits
      actually uses a global variable to decide when to stop. This
      stack trace gives an example where more
      than one thread is using this function at a time. These
      modalWait functions will not work correctly if called
      symultaneously on different threads.

      The trace:

        ----

      This happened while viewing the sample presentation using a114-19971201
      with defect 3875 and 3880 applied.

      I think I resized the window while it was trying to go to the previous
      page.

      ^\SIGQUIT received. Processing terminated

      Full thread dump:
          "AWT-Selection" (TID:0x30246348, sys_thread_t:0x21463de8)
               Native Thread State: ThreadID: 200bd998 Reuse: 130 USER MONITOR WAIT) prio=5
              sun.awt.motif.SelectionThread.run(X11Selection.java:298)
          "AWT-Selection" (TID:0x30246388, sys_thread_t:0x211b1308)
               Native Thread State: ThreadID: 200bda98 Reuse: 39 USER MONITOR WAIT) prio=5
              sun.awt.motif.SelectionThread.run(X11Selection.java:298)
          "Thread-6" (TID:0x301f8428, sys_thread_t:0x20de36c8)
               Native Thread State: ThreadID: 200bdd98 Reuse: 1 USER MONITOR WAIT) prio=5
              java.lang.Object.wait(Object.java)
              lotus.ccmail.session.LauncherThread$LaunchQueue.getItem(LauncherThread.java:112)
              lotus.ccmail.session.LauncherThread.run(LauncherThread.java:59)
          "Screen Updater" (TID:0x301f84a8, sys_thread_t:0x20c8cef8)
               Native Thread State: ThreadID: 200bde98 Reuse: 1 USER MONITOR WAIT) prio=4
              java.lang.Object.wait(Object.java)
              sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
              sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
          "Thread-5" (TID:0x301d01e8, sys_thread_t:0x20c89ec8)
               Native Thread State: ThreadID: 200bdf98 Reuse: 1 USER SUSPENDED) prio=5
              java.lang.Thread.suspend(Thread.java)
              lotus.ccmail.session.ServerWorker.run(ccMsgServer.java:561)
              java.lang.Thread.run(Thread.java)
          "Thread-4" (TID:0x301d01b0, sys_thread_t:0x20c859a8)
               Native Thread State: ThreadID: 200be098 Reuse: 1 USER SUSPENDED) prio=5
              java.lang.Thread.suspend(Thread.java)
              lotus.ccmail.session.ServerWorker.run(ccMsgServer.java:561)
              java.lang.Thread.run(Thread.java)
          "Thread-3" (TID:0x301d0178, sys_thread_t:0x20c784e8)
               Native Thread State: ThreadID: 200be198 Reuse: 1 USER SUSPENDED) prio=5
              java.lang.Thread.suspend(Thread.java)
              lotus.ccmail.session.ServerWorker.run(ccMsgServer.java:561)
              java.lang.Thread.run(Thread.java)
          "Thread-2" (TID:0x301d0140, sys_thread_t:0x20c78318)
               Native Thread State: ThreadID: 200be298 Reuse: 1 USER SUSPENDED) prio=5
              java.lang.Thread.suspend(Thread.java)
              lotus.ccmail.session.ServerWorker.run(ccMsgServer.java:561)
              java.lang.Thread.run(Thread.java)
          "Thread-7" (TID:0x301d0418, sys_thread_t:0x20939a68)
               Native Thread State: ThreadID: 200be398 Reuse: 2 USER MONITOR WAIT) prio=4
              com.lotus.desktop.main.DesktopClock.run(DesktopClock.java:216)
              java.lang.Thread.run(Thread.java)
          "Thread-1" (TID:0x30203720, sys_thread_t:0x209393c8)
               Native Thread State: ThreadID: 200ca498 Reuse: 2 USER MONITOR WAIT) prio=5
              com.lotus.desktop.main.DesktopWatchDog.run(DesktopWatchDog.java:46)
          "Thread-13" (TID:0x3020b9b0, sys_thread_t:0x20939fc8)
               Native Thread State: ThreadID: 200ca598 Reuse: 3 USER MONITOR WAIT) prio=5
              java.lang.Object.wait(Object.java)
              sun.awt.motif.X11Selection.getTransferData(X11Selection.java:244)
              lotus.graphics.GrSelection.getTextFromSystemClipboard(GrSelection.java:1442)
              lotus.graphics.GrSelection.systemClipboardHasDataForUs(GrSelection.java:1516)
              lotus.graphics.GrSelection.isPasteDataAvailable(GrSelection.java:1285)
              lotus.fc.ic.ClipboardCommander.getPropertyOptions(ClipboardCommander.java:146)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:273)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:240)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:236)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:220)
              lotus.fc.ic.ActionBar.setState(ActionBar.java:285)
              lotus.fc.ic.ActionBar.updatePanel(ActionBar.java:200)
              lotus.fc.ic.ActionBar.setCurrentBarFromAD(ActionBar.java:160)
              lotus.fc.ic.ActionBar.setCurrentBarFromID(ActionBar.java:121)
              lotus.fc.ic.ActionBar.setTopLevelBarFromID(ActionBar.java:92)
              lotus.fc.ic.InfoCenter.showCurrentBar(InfoCenter.java:2220)
              lotus.fc.ic.InfoCenter.setCurrent(InfoCenter.java:2173)
              lotus.fc.ic.InfoCenter.update(InfoCenter.java:792)
              java.util.Observable.notifyObservers(Observable.java)
              lotus.fc.ui.RefreshThreadObservable.ping(RefreshThread.java:375)
          "Thread-8" (TID:0x3019cc58, sys_thread_t:0x20939df8)
               Native Thread State: ThreadID: 200ca698 Reuse: 2 USER MONITOR WAIT) prio=5
              lotus.ccmail.ibmailsource.IBMailEnable.run(IBMailEnable.java:191)
              java.lang.Thread.run(Thread.java)
          "AWT-Finalizer" (TID:0x30355560, sys_thread_t:0x20939028)
               Native Thread State: ThreadID: 200ca898 Reuse: 3 DAEMON MONITOR WAIT) prio=9
              java.lang.Object.wait(Object.java)
              sun.awt.AWTFinalizer.run(AWTFinalizer.java:48)
          "Thread-16" (TID:0x3008c930, sys_thread_t:0x20938e58)
               Native Thread State: ThreadID: 200ca998 Reuse: 3 USER MONITOR WAIT) prio=6
              java.lang.Object.wait(Object.java)
              lotus.wp.CEventQueue.GetEvent(CEventQueue.java:24)
              lotus.wp.CDocument.run(CDocument.java:3687)
          "Thread-18" (TID:0x30300ec8, sys_thread_t:0x207fb1c8)
               Native Thread State: ThreadID: 200caa98 Reuse: 4 USER MONITOR WAIT) prio=6
              java.lang.Object.wait(Object.java)
              lotus.wp.CEventQueue.GetEvent(CEventQueue.java:24)
              lotus.wp.CDocument.run(CDocument.java:3687)
          "ccMsgServer" (TID:0x30203810, sys_thread_t:0x206f5bd8)
               Native Thread State: ThreadID: 200cab98 Reuse: 2 USER BLOCKING) prio=1
              java.net.PlainSocketImpl.accept(PlainSocketImpl.java:387)
              java.net.ServerSocket.implAccept(ServerSocket.java:206)
              java.net.ServerSocket.accept(ServerSocket.java:189)
              lotus.ccmail.session.ccMsgServer.run(ccMsgServer.java:989)
          "AWT-Motif" (TID:0x300a4920, sys_thread_t:0x204c1008)
               Native Thread State: ThreadID: 200cac98 Reuse: 1 USER MONITOR WAIT) prio=5
              java.lang.Thread.run(Thread.java)
          "AWT-Input" (TID:0x300a48e8, sys_thread_t:0x204c0e38)
               Native Thread State: ThreadID: 200cad98 Reuse: 1 USER MONITOR WAIT) prio=5
          "AWT-EventQueue-0" (TID:0x300029a0, sys_thread_t:0x204bcb88)
               Native Thread State: ThreadID: 200cae98 Reuse: 1 USER MONITOR WAIT) prio=5
              java.lang.Object.wait(Object.java)
              sun.awt.motif.X11Selection.getTransferData(X11Selection.java:244)
              lotus.graphics.GrSelection.getTextFromSystemClipboard(GrSelection.java:1442)
              lotus.graphics.GrSelection.systemClipboardHasDataForUs(GrSelection.java:1516)
              lotus.graphics.GrSelection.isPasteDataAvailable(GrSelection.java:1285)
              lotus.fc.ic.ClipboardCommander.getPropertyOptions(ClipboardCommander.java:146)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:273)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:240)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:236)
              lotus.fc.ic.ActionBarPanel.setState(ActionBarPanel.java:220)
              lotus.fc.ic.ActionBar.setState(ActionBar.java:285)
              lotus.fc.ic.ActionBar.setState(ActionBar.java:276)
              lotus.fc.ic.ActionBar.performAction(ActionBar.java:499)
              lotus.fc.ic.ActionBar.performAction(ActionBar.java:422)
              lotus.fc.ic.ActionBar.performAction(ActionBar.java:409)
              lotus.fc.ic.ActionBar.itemClicked(ActionBar.java:346)
              lotus.fc.ic.ActionBarPanel.notifyActionBarPanelEventListeners(ActionBarPanel.java:430)
              lotus.fc.ic.ActionBarPanel.actionPerformed(ActionBarPanel.java:445)
              lotus.fc.ic.ICLabelPanel.notifyActionListeners(ICLabelPanel.java:1255)
              lotus.fc.ic.ICLabelPanel.access$0(ICLabelPanel.java:1242)
          "Alloc State Notifier" (TID:0x30002960, sys_thread_t:0x203fc468)
               Native Thread State: ThreadID: 200caf98 Reuse: 1 USER MONITOR WAIT) prio=9
              sun.misc.VMNotifierThread.run(VM.java)
          "Red Alloc State Notifier" (TID:0x300028a0, sys_thread_t:0x203fbdd8)
               Native Thread State: ThreadID: 200cb098 Reuse: 1 USER MONITOR WAIT) prio=10
              sun.misc.VMNotifierThread.run(VM.java)
          "Request Processor" (TID:0x300015b8, sys_thread_t:0x2039e0c8)
               Native Thread State: ThreadID: 200cb198 Reuse: 1 USER MONITOR WAIT) prio=7
              sun.misc.Queue.dequeue(Queue.java:90)
              sun.misc.Queue.dequeue(Queue.java:74)
              sun.misc.RequestProcessor.run(RequestProcessor.java:56)
              java.lang.Thread.run(Thread.java)
          "Finalizer thread" (TID:0x30001078, sys_thread_t:0x202f1778)
               Native Thread State: ThreadID: 200cb298 Reuse: 1 DAEMON MONITOR WAIT
               Native Stack Data : base: 20350d1c pointer 20350178 used(2980) free(255068)) prio=1 *current thread*
          "main" (TID:0x30001008, sys_thread_t:0x202bfa98)
               Native Thread State: ThreadID: 200cb398 Reuse: 1 USER PRIMORDIAL MONITOR WAIT) prio=5
      Monitor Cache Dump:
          <unknown key> (0x0): monitor owner: "AWT-Selection".
          <unknown key> (0x0): monitor owner: "AWT-Selection".
      Registered Monitor Dump:
          Thread Sleep lock 0x21463de8: unowned.
          Thread Sleep lock 0x209391f8: unowned.
          Thread Sleep lock 0x211b1308: unowned.
          Thread Sleep lock 0x207fb1c8: unowned.
          Thread Sleep lock 0x20939fc8: unowned.
          Thread Sleep lock 0x209918c8: unowned.
          Thread Sleep lock 0x20939a68: unowned.
          Thread Sleep lock 0x20991a98: unowned.
          Thread Sleep lock 0x20939df8: unowned.
          Thread Sleep lock 0x209393c8: unowned.
          Thread queue lock: unowned.
          Name and type hash table lock: unowned.
          String intern lock: unowned.
          JNI pinning lock: unowned.
          JNI global reference lock: unowned.
          BinClass lock: unowned.
          Class loading lock: unowned.
          Java stack lock: unowned.
          Code rewrite lock: unowned.
          Has finalization queue lock: unowned.
          Finalize me queue lock: unowned.
          Monitor cache lock: unowned.
          Monitor registry: monitor owner: "Finalizer thread".
      ^C$


      ======================================================================

            duke J. Duke
            miflemi Mick Fleming
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: