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

Plugin can freeze when multiple applets use Thread.setName()

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b96
    • CPU:
      generic
    • OS:
      solaris_2.6

      Backports

        Description

        A possible deadlock is observed when monitoring the plugin behavior for an application openning multiple applets in the browser simultaneously. The possibility of a deadlock is observed using the Thread Debugger of Borland Optimizeit Suite 6.0

        An example scenario from a real customer app is provided below. Thread-78 starts to monitor java.lang.Object 0x224b3dd0 and sun.plugin.Security.Activator.SecurityManager 0x1a5a4e40 sequentially. Client thread CSDUDGrObjWnd grabs the same locks but in a reverse order. There're many more client threads like CSDUDGrObjWnd in the customer's system starting at various times. This can cause timing dependent deadlocks.

        This deadlock can happen during the load or refresh of an HTML page containing multiple applets.

        Plugin synchronization needs to be improved to prevent this freeze from happenning.

        Stack Traces:

        Thread78 :

        sun.applet.AppletSecurity.checkAccess() [ holds sun.plugin.security.ActivatorSecurityManager 0x1a5a4e40 ]
        java.lang.ThreadGroup.checkAccess()
        java.lang.ThreadGroup.<init>()
        sun.applet.AppletThreadGroup.init<>()
        sun.applet.AppletThreadGroup.init<>()
        sun.applet.AppletClassLoader$4.run()
        java.security.AccessController.doPrivileged()
        sun.applet.AppletClassLoader.getThreadGroup()
        sun.applet.AppletClassLoader.getThreadGroup() [ holds java.lang.Object 0x224b3dd0 ]
        sun.applet.AppletClassLoader.grab()
        sun.applet.AppletPanel.createAppletThread()
        sun.applet.AppletPanel.init()
        sun.plugin.AppletViewer.appletInit()
        sun.plugin.viewer.LifeCycleManager.initAppletPanel
        sun.plugin.bviewer.IExplorerPluginObject$Initer.run()

        Thread CSDUDGrObjWnd :

        sun.applet.AppletClassLoader.getThreadGroup() [ holds java.lang.Object 0x224b3dd0 ]
        sun.applet.AppletSecurity.getThreadGroup()
        sun.applet.AppletSecurity.inThreadGroup()
        sun.applet.AppletSecurity.inThreadGroup()
        sun.applet.AppletSecurity.checkAccess()
        sun.applet.AppletSecurity.checkAccess() [ holds sun.plugin.security.ActivatorSecurityManager 0x1a5a4e40 ]
        java.lang.Thread.checkAccess()
        java.lang.Thread.setName()
        jp.co.yokogawa....CSDUDGrObjWnd.setMainThreadName()
        jp.co.yokogawa....CSDUDGrObjWnd.init()
        sun.applet.AppletPanel.run()
        java.lang.Thread.run()
        ###@###.### 10/13/04 14:03 GMT

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                dphamsunw Danielle Pham (Inactive)
                Reporter:
                ksoshals Kirill Soshalskiy (Inactive)
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: