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
|