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

Java Plugin2 6u14 on Windows - LiveConnect causes IE to freeze when network is disabled/re-enabled

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P3 P3
    • 6-pool
    • 6u14
    • deploy
    • x86
    • windows_xp

      1. Browse to a HTML page containing the customer applet
      2. Wait for customer applet to initialize session and successfully receive data from server
      3. Right click and select Disable on the active LAN connection
      4. After a few seconds, IE will not response and cannot be closed properly. Even if the netowrk is reactivated.

      There is a captured video, IE6_freeze.wrf, for reproducible steps and the problem behavior. /net/cores/cores/71256590/ has the .wrf video capture and the thread dumps.

      Note: You can download player for .wrf file from here - http://www.webex.com/downloadplayer.html

      The following time line will explain you the circumstances during the incident.

      00:00:20 - TCT successfully connected to RSS and received data
      00:00:39 - Disable LAN connection
      00:00:53 - IE started to freeze. During this time, you can notice that the applet log in Java console was still running. This shows that the Applet was working even the browser hanged.
      00:03:00 - Kill java process and IE become active again. If Java is not killed, I need to end task IE forcefully.

      Found workarounds

      I have found 2 workaround for avoiding IE freeze problem.
      1. Disable next generation plug-in in Java Control panel
      OR
      2. Disable sending status from applet to JavaScript

      For the 1st workaround, this is not acceptable because we cannot force client to disable this function which is enabled by default.

      For the 2nd workaround, this is not acceptable as well because user needs to get notification about current status of the connection.

      Both thread dumps confirm that plugin is inside the "runMessagePump0" method and never got out of it.


      java_tracing.log.1 shows:

      LiveConnectSupport.PerPluginInfo.javaScriptCall:^M
      methodName: statuscallback^M
      args: [[RemoteJavaObject jvmID=1 appletID=2 objectID=13 isApplet=false]]^M
      LiveConnectSupport.sendRemoteJavaObjectOp: HAS_FIELD_OR_METHOD "elements"^M
      AbstractPlugin.doJavaObjectOp starting to wait for result ID 81^M
      JVMInstance (1.6.0.11) processing GetProxyMessage^M
      JVMInstance (1.6.0.11) processing GetProxyMessage^M
      JVMInstance (1.6.0.11) processing JavaScriptCallMessage^M
      LiveConnectSupport.PerPluginInfo.javaScriptCall:^M
      methodName: statuscallback^M
      args: [[RemoteJavaObject jvmID=1 appletID=2 objectID=14 isApplet=false]]^M
      LiveConnectSupport.sendRemoteJavaObjectOp: HAS_FIELD_OR_METHOD "elements"^M
      AbstractPlugin.doJavaObjectOp starting to wait for result ID 82^M
      JVMInstance (1.6.0.11) processing JavaReplyMessage^M
      JVMInstance received JavaReplyMessage with result ID 82^M
      AbstractPlugin.doJavaObjectOp ending wait for result ID 82^M
      LiveConnectSupport: result [ResultID 82] = true^M

      Java thread dump:
      java version "1.6.0_14"
      Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
      Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)

      Attaching to core c:\bugs\liveconnect\3rd_iexplore.dmp from executable c:\debugbin\6u14\jvm.dll, please wait...
      WARNING: You have disabled SA and VM version check. You may be using incompatible version of SA and you may see unexpected results.
      Debugger attached successfully.
      Client compiler detected.
      JVM version is 14.0-b16
      Deadlock Detection:

      No deadlocks found.

      Finding object size using Printezis bits and skipping over...
      Thread 27: (state = BLOCKED, current Java SP = 0x06b7fc00
      )
       - java.lang.Thread.sleep(long) @bci=0, pc=0x03d99e27, methodOop=0x2b1a7790 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$HeartbeatThread.run() @bci=154, pc=0x03d92da1, methodOop=0x26a6b2d0 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 26: (state = BLOCKED, current Java SP = 0x0708f860
      )
       - java.lang.Object.wait(long) @bci=0, pc=0x03d99e27, methodOop=0x2b190590 (Interpreted frame)
       - sun.plugin2.message.Queue.waitForMessage(long) @bci=19, pc=0x03d92da1, methodOop=0x26a554a8 (Interpreted frame)
       - sun.plugin2.message.Pipe.receive(long) @bci=9, pc=0x03d92f07, methodOop=0x26a540b0 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$WorkerThread.run() @bci=33, pc=0x03d92f07, methodOop=0x26a5fc60 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 25: (state = IN_NATIVE, current Java SP = 0x06f8f920
      )
       - java.io.FileInputStream.readBytes(byte[], int, int) @bci=0, pc=0x03d99e27, methodOop=0x2b200cd0 (Interpreted frame)
       - java.io.FileInputStream.read(byte[]) @bci=5, pc=0x03d92ec5, methodOop=0x2b200a80 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$StreamMonitor.run() @bci=13, pc=0x03d92ec5, methodOop=0x26a5d490 (Interpreted frame)
       - java.lang.Thread.run() @bci=11, pc=0x03d9327d, methodOop=0x2b1a66f8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 24: (state = IN_NATIVE, current Java SP = 0x06e8f8a0
      )
       - java.io.FileInputStream.readBytes(byte[], int, int) @bci=0, pc=0x03d99e27, methodOop=0x2b200cd0 (Interpreted frame)
       - java.io.FileInputStream.read(byte[], int, int) @bci=4, pc=0x03d92ec5, methodOop=0x2b200a30 (Interpreted frame)
       - java.io.BufferedInputStream.fill() @bci=175, pc=0x03d92ec5, methodOop=0x2b203480 (Interpreted frame)
       - java.io.BufferedInputStream.read1(byte[], int, int) @bci=44, pc=0x03d92da1, methodOop=0x2b203700 (Interpreted frame)
       - java.io.BufferedInputStream.read(byte[], int, int) @bci=49, pc=0x03d92ec5, methodOop=0x2b2034d0 (Interpreted frame)
       - java.io.FilterInputStream.read(byte[]) @bci=5, pc=0x03d92ec5, methodOop=0x2b202cb8 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$StreamMonitor.run() @bci=13, pc=0x03d92ec5, methodOop=0x26a5d490 (Interpreted frame)
       - java.lang.Thread.run() @bci=11, pc=0x03d9327d, methodOop=0x2b1a66f8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 23: (state = IN_NATIVE, current Java SP = 0x06d8fa70
      )
       - java.lang.ProcessImpl.waitFor() @bci=0, pc=0x03d99e27, methodOop=0x26a5b500 (Interpreted frame)
       - sun.plugin2.jvm.JVMLauncher$JVMWatcher.run() @bci=17, pc=0x03d92ec5, methodOop=0x26a5ccf8 (Interpreted frame)
       - java.lang.Thread.run() @bci=11, pc=0x03d9327d, methodOop=0x2b1a66f8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 22: (state = IN_NATIVE, current Java SP = 0x06c7f960
      )
       - sun.plugin2.os.windows.Windows.ReadFile0(long, java.lang.Object, int, int, java.lang.Object, int, java.nio.ByteBuffer) @bci=0, pc=0x03d99e27, methodOop=0x269c73b8 (Interpreted frame)
       - sun.plugin2.os.windows.Windows.ReadFile(long, java.nio.Buffer, int, java.nio.IntBuffer, sun.plugin2.os.windows.OVERLAPPED) @bci=63, pc=0x03d92fcd, methodOop=0x269c7338 (Interpreted frame)
       - sun.plugin2.ipc.windows.WindowsNamedPipe.read(java.nio.ByteBuffer) @bci=27, pc=0x03d92fcd, methodOop=0x26a2f670 (Interpreted frame)
       - sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.read() @bci=67, pc=0x03d92ec5, methodOop=0x26a33af8 (Interpreted frame)
       - sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.readByte() @bci=25, pc=0x03e2d797, methodOop=0x26a33d38 (Compiled frame)
       - sun.plugin2.message.AbstractSerializer.readInt() @bci=1, pc=0x03e3177f, methodOop=0x26a366b0 (Compiled frame)
       - sun.plugin2.message.transport.SerializingTransport.read() @bci=15, pc=0x03d933a1, methodOop=0x26a32bc0 (Interpreted frame)
       - sun.plugin2.message.Pipe$WorkerThread.run() @bci=34, pc=0x03d933e3, methodOop=0x26a55f70 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 21: (state = BLOCKED, current Java SP = 0x0685fc20
      )
       - java.lang.Object.wait(long) @bci=0, pc=0x03d99e27, methodOop=0x2b190590 (Interpreted frame)
       - java.lang.Object.wait() @bci=2, line=485, pc=0x03d92da1, methodOop=0x2b1904f0 (Interpreted frame)
       - com.sun.deploy.util.Trace$TraceMsgQueueChecker.run() @bci=30, pc=0x03d92da1,
      methodOop=0x269f6748 (Interpreted frame)
       - java.lang.Thread.run() @bci=11, pc=0x03d9327d, methodOop=0x2b1a66f8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 17: (state = BLOCKED, current Java SP = null
      )

      Locked ownable synchronizers:
          - None

      Thread 16: (state = BLOCKED, current Java SP = null
      )

      Locked ownable synchronizers:
          - None

      Thread 15: (state = BLOCKED, current Java SP = 0x0625fb20
      )
       - java.lang.Object.wait(long) @bci=0, pc=0x03d99e27, methodOop=0x2b190590 (Interpreted frame)
       - java.lang.ref.ReferenceQueue.remove(long) @bci=44, pc=0x03d92da1, methodOop=0x2b1d1d28 (Interpreted frame)
       - java.lang.ref.ReferenceQueue.remove() @bci=2, pc=0x03d92f07, methodOop=0x2b1d1d78 (Interpreted frame)
       - java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, pc=0x03d92f07, methodOop=0x2b1d8298 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 14: (state = BLOCKED, current Java SP = 0x0615fbd0
      )
       - java.lang.Object.wait(long) @bci=0, pc=0x03d99e27, methodOop=0x2b190590 (Interpreted frame)
       - java.lang.Object.wait() @bci=2, line=485, pc=0x03d92da1, methodOop=0x2b1904f0 (Interpreted frame)
       - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, pc=0x03d92da1, methodOop=0x2b1d7ee8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

      Thread 0: (state = IN_NATIVE, current Java SP = 0x0013b8c0
      )
       - sun.plugin2.main.server.WindowsHelper.runMessagePump0(long, long, boolean) @bci=0, pc=0x03d99e27, methodOop=0x26b259c8 (Interpreted frame)
       - sun.plugin2.main.server.WindowsHelper.runMessagePump(sun.plugin2.ipc.Event, long, boolean) @bci=20, pc=0x03d92da1, methodOop=0x26b25948 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.runMessagePump(long) @bci=12, pc=0x03d92da1, methodOop=0x269b0518 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.runMessagePump() @bci=4, pc=0x03d92da1, methodOop=0x269b0488 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.access$400(sun.plugin2.main.server.IExplorerPlugin) @bci=1, pc=0x03d92da1, methodOop=0x269b0af0 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin$1.waitForSignal() @bci=4, pc=0x03d92da1, methodOop=0x26a6a2e0 (Interpreted frame)
       - sun.plugin2.main.server.ResultHandler.waitForResult(sun.plugin2.main.server.ResultID, int, sun.plugin2.main.server.AppletID) @bci=48, pc=0x03d92da1, methodOop=0x26a6a718 (Interpreted frame)
       - sun.plugin2.main.server.AbstractPlugin.doJavaObjectOp(sun.plugin2.liveconnect.RemoteJavaObject, boolean, int, java.lang.String, long, long, int, long, long)
      @bci=285, pc=0x03d92da1, methodOop=0x269b4c20 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.doJavaObjectOp(sun.plugin2.liveconnect.RemoteJavaObject, boolean, int, java.lang.String, long, long, int, long, long) @bci=83, pc=0x03d92fcd, methodOop=0x269afd08 (Interpreted frame)
       - sun.plugin2.main.server.AbstractPlugin.javaObjectHasFieldOrMethod(sun.plugin2.liveconnect.RemoteJavaObject, long) @bci=15, pc=0x03d92fcd, methodOop=0x269b4900 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.GetIDOfName(java.lang.String, sun.plugin2.liveconnect.RemoteJavaObject) @bci=115, pc=0x03d92fcd, methodOop=0x269aff20 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.iDispatchInvoke0(long, long, java.lang.String, int, boolean, long, int, java.lang.Object[]) @bci=0, pc=0x03d99e05, methodOop=0x269aea78 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.iDispatchInvoke(long, java.lang.String, int, long, int) @bci=22, pc=0x03d92ec5, methodOop=0x269aebd0 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.javaScriptCallImpl(sun.plugin2.liveconnect.BrowserSideObject, java.lang.String, java.lang.Object[], int) @bci=73, pc=0x03d92f07, methodOop=0x269ae860 (Interpreted frame)
       - sun.plugin2.main.server.IExplorerPlugin.javaScriptCall(sun.plugin2.liveconnect.BrowserSideObject, java.lang.String, java.lang.Object[]) @bci=5, pc=0x03d92f07, methodOop=0x269ae230 (Interpreted frame)
       - sun.plugin2.main.server.LiveConnectSupport$PerPluginInfo.javaScriptCall(sun.plugin2.message.Conversation, sun.plugin2.liveconnect.BrowserSideObject, java.lang.String, java.lang.Object[]) @bci=149, pc=0x03d933e3, methodOop=0x26a67ee0 (Interpreted frame)
       - sun.plugin2.main.server.LiveConnectSupport.javaScriptCall(sun.plugin2.message.Conversation, int, sun.plugin2.liveconnect.BrowserSideObject, java.lang.String, java.lang.Object[]) @bci=9, pc=0x03d92f07, methodOop=0x26a65260 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$WorkerThread$2.doWork() @bci=35, pc=0x03d92f07, methodOop=0x26b24a68 (Interpreted frame)
       - sun.plugin2.main.server.JVMInstance$6.run() @bci=8, pc=0x03d92f07, methodOop=0x26b22de8 (Interpreted frame)

      Locked ownable synchronizers:
          - None

            raginip Ragini Prasad (Inactive)
            mhmiller Matt Miller (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: