-
Bug
-
Resolution: Cannot Reproduce
-
P2
-
None
-
6u1
-
x86
-
windows_xp
I am running a SSL VPN site. This site run a java applet in SUN JVM. Everything works fine with IE6 and IE7 if I stay on same page but in IE7 if I go to another tab IE7 hangs. MSJVM works fine in this case. I have approached IE tech support but as per there analysis below problem seems to be in Sun JVM.
Explanation from Microsoft Tech support
After deeply analyzing this issue, I found it is caused by the dead lock in Java Applet. However, I have limited resources of JVM and Java applet, it is hard to say which code causes the dead lock. But from IE point of view, I'd like to share with you the following information:
The main thread is pending on thread 0xe84 when switching and rendering the tabbed frame.
0:000> kbnL
# ChildEBP RetAddr Args to Child
00 0012dcbc 7c90e9ab 7c8094e2 00000002 0012dce8 ntdll!KiFastSystemCallRet
01 0012dcc0 7c8094e2 00000002 0012dce8 00000001 ntdll!ZwWaitForMultipleObjects+0xc
02 0012dd5c 7e4195f9 00000002 0012dd84 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
03 0012ddb8 77512235 00000001 0012de00 000003e8 USER32!RealMsgWaitForMultipleObjectsEx+0x13e
04 0012dde0 7751235c 0012de00 000003e8 0012de10 ole32!CCliModalLoop::BlockFn+0x80
05 0012de08 77526749 ffffffff 0012df00 0012de38 ole32!ModalLoop+0x5b
06 0012de18 77601f01 001ab6f8 0012df00 00000000 ole32!SwitchSTA+0x21
07 0012de38 7760109a 0012df00 001b9e4c 0012df5c ole32!CRpcChannelBuffer::SwitchAptAndDispatchCall+0xd1
08 0012df18 77512409 001b9e4c 0012e02c 0012e01c ole32!CRpcChannelBuffer::SendReceive2+0xb9
09 0012df34 775123b2 0012e02c 0012e01c 001b9e4c ole32!CCliModalLoop::SendReceive+0x1e
0a 0012dfa0 77510414 001b9e4c 0012e02c 0012e01c ole32!CAptRpcChnl::SendReceive+0x6f
0b 0012dff4 77ef3db5 001b9e4c 0012e02c 0012e01c ole32!CCtxComChnl::SendReceive+0x113
0c 0012e010 77ef3eac 001fcf7c 0012e058 0012e454 RPCRT4!NdrProxySendReceive+0x43
0d 0012e3ec 71d519ed 71d47dd0 71d4fff2 0012e408 RPCRT4!NdrClientCall2+0x1fa
0e 0012e400 71d516a9 001fcf7c 00b84508 00b917a0 actxprxy!IServiceProvider_RemoteQueryService_Proxy+0x1b
0f 0012e418 00b83332 001fcf7c 00b84508 00b917a0 actxprxy!IServiceProvider_QueryService_Proxy+0x1a
10 0012e438 00b563ad 001fab9c 00b84508 00b917a0 IEFRAME!IUnknown_QueryService+0x3d
11 0012e458 00b56443 001ae954 00b5f650 00000073 IEFRAME!CTabWindow::Exec+0x24
12 0012e490 00b563f4 001ae950 0012e4b0 00000000 IEFRAME!CTabWindow::GetSearchState+0x2f
13 0012e5c4 00b4f1bc 0014f994 00000191 000a0108 IEFRAME!CBrowserFrame::OnTabStateChanged+0xf7
0:000> dt pOXIDEntry
Local var @ 0x12de20 Type OXIDEntry*
0x001ab6f8
+0x000 _pNext : 0x001ab770 OXIDEntry
+0x004 _pPrev : 0x001ab680 OXIDEntry
+0x008 _dwPid : 0xec4
+0x00c _dwTid : 0xe84
In the thread 0xe84, we found:
0:005> kbnL100
# ChildEBP RetAddr Args to Child
00 0257f538 7c90e9ab 7c8094e2 00000002 0257f564 ntdll!KiFastSystemCallRet
01 0257f53c 7c8094e2 00000002 0257f564 00000001 ntdll!ZwWaitForMultipleObjects+0xc
02 0257f5d8 7e4195f9 00000002 0257f600 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
03 0257f634 7e4196a8 00000001 0257f6a4 ffffffff USER32!RealMsgWaitForMultipleObjectsEx+0x13e
04 0257f650 6d409cfc 00000001 0257f6a4 00000000 USER32!MsgWaitForMultipleObjects+0x1f
WARNING: Stack unwind information not available. Following frames may be wrong.
05 0257f720 6d6f45a9 0257f754 0257f8fc 0000000a jpiexp32!Java_sun_plugin_services_WPlatformService_waitEvent+0x2e
06 0257f79c 6d749317 0000000a 00000000 0257f844 jvm!AsyncGetCallTrace+0x1b284
07 0257f7e0 6d6f447a 6d6f447e 0257f8f4 0257f804 jvm!jmm_GetLastGCStat+0x10242
08 0257f8b0 6d6f9835 008c5880 0257f8f4 008c5330 jvm!AsyncGetCallTrace+0x1b155
09 0257f904 6d4043c2 008c5880 008c5330 008fccd9 jvm!AsyncGetCallTrace+0x20510
0a 0257f93c 6d4053d7 0257f95c 6d410954 6d410950 jpiexp32+0x43c2
0b 0257f978 6d40256d 00000000 00000000 008e1560 jpiexp32!CJSObject::Equals+0x29a
0c 0257f9a4 6d40261b 00000000 03eda1d0 00000000 jpiexp32+0x256d
0d 0257f9d0 6d4076a1 008e1560 7ea1214e 008e15e0 jpiexp32+0x261b
0e 0257fa74 7ea12513 00000001 00000000 0257fb04 jpiexp32!DllGetClassObject+0x1b31
0f 0257fa98 7ea12b0c 03eda1d0 045ff700 00000000 mshtml!COleSite::ReleaseObject+0x98
10 0257faec 7e916283 0257fb04 045b5c98 03edf0e0 mshtml!COleSite::Notify+0x5c6
We took the call stack we see that the mshtml.dll (IE module) is trying to change the readystate for the page and we see it stuck in OS waiting for
Sun VM. We cannot really say anything on what Sun VM is doing as we don’t have symbols for their modules. So either you need to investigate what’s happening in
your applet or contact Sun for this issue.
IE embed Java applet as one ActiveX control (OLE), when trying to release the OLE and invoke the functions in JPIEXP32 (JVM components), JVM stop responding and waiting for other events...
05 0257f720 6d6f45a9 0257f754 0257f8fc 0000000a jpiexp32!Java_sun_plugin_services_WPlatformService_waitEvent+0x2e
But the event will never returns so the JVM stops responding and causes IE hang. There may be one dead lock or bad design in JVM causes this issue. Please kindly troubleshot it from the Java side.
Explanation from Microsoft Tech support
After deeply analyzing this issue, I found it is caused by the dead lock in Java Applet. However, I have limited resources of JVM and Java applet, it is hard to say which code causes the dead lock. But from IE point of view, I'd like to share with you the following information:
The main thread is pending on thread 0xe84 when switching and rendering the tabbed frame.
0:000> kbnL
# ChildEBP RetAddr Args to Child
00 0012dcbc 7c90e9ab 7c8094e2 00000002 0012dce8 ntdll!KiFastSystemCallRet
01 0012dcc0 7c8094e2 00000002 0012dce8 00000001 ntdll!ZwWaitForMultipleObjects+0xc
02 0012dd5c 7e4195f9 00000002 0012dd84 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
03 0012ddb8 77512235 00000001 0012de00 000003e8 USER32!RealMsgWaitForMultipleObjectsEx+0x13e
04 0012dde0 7751235c 0012de00 000003e8 0012de10 ole32!CCliModalLoop::BlockFn+0x80
05 0012de08 77526749 ffffffff 0012df00 0012de38 ole32!ModalLoop+0x5b
06 0012de18 77601f01 001ab6f8 0012df00 00000000 ole32!SwitchSTA+0x21
07 0012de38 7760109a 0012df00 001b9e4c 0012df5c ole32!CRpcChannelBuffer::SwitchAptAndDispatchCall+0xd1
08 0012df18 77512409 001b9e4c 0012e02c 0012e01c ole32!CRpcChannelBuffer::SendReceive2+0xb9
09 0012df34 775123b2 0012e02c 0012e01c 001b9e4c ole32!CCliModalLoop::SendReceive+0x1e
0a 0012dfa0 77510414 001b9e4c 0012e02c 0012e01c ole32!CAptRpcChnl::SendReceive+0x6f
0b 0012dff4 77ef3db5 001b9e4c 0012e02c 0012e01c ole32!CCtxComChnl::SendReceive+0x113
0c 0012e010 77ef3eac 001fcf7c 0012e058 0012e454 RPCRT4!NdrProxySendReceive+0x43
0d 0012e3ec 71d519ed 71d47dd0 71d4fff2 0012e408 RPCRT4!NdrClientCall2+0x1fa
0e 0012e400 71d516a9 001fcf7c 00b84508 00b917a0 actxprxy!IServiceProvider_RemoteQueryService_Proxy+0x1b
0f 0012e418 00b83332 001fcf7c 00b84508 00b917a0 actxprxy!IServiceProvider_QueryService_Proxy+0x1a
10 0012e438 00b563ad 001fab9c 00b84508 00b917a0 IEFRAME!IUnknown_QueryService+0x3d
11 0012e458 00b56443 001ae954 00b5f650 00000073 IEFRAME!CTabWindow::Exec+0x24
12 0012e490 00b563f4 001ae950 0012e4b0 00000000 IEFRAME!CTabWindow::GetSearchState+0x2f
13 0012e5c4 00b4f1bc 0014f994 00000191 000a0108 IEFRAME!CBrowserFrame::OnTabStateChanged+0xf7
0:000> dt pOXIDEntry
Local var @ 0x12de20 Type OXIDEntry*
0x001ab6f8
+0x000 _pNext : 0x001ab770 OXIDEntry
+0x004 _pPrev : 0x001ab680 OXIDEntry
+0x008 _dwPid : 0xec4
+0x00c _dwTid : 0xe84
In the thread 0xe84, we found:
0:005> kbnL100
# ChildEBP RetAddr Args to Child
00 0257f538 7c90e9ab 7c8094e2 00000002 0257f564 ntdll!KiFastSystemCallRet
01 0257f53c 7c8094e2 00000002 0257f564 00000001 ntdll!ZwWaitForMultipleObjects+0xc
02 0257f5d8 7e4195f9 00000002 0257f600 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
03 0257f634 7e4196a8 00000001 0257f6a4 ffffffff USER32!RealMsgWaitForMultipleObjectsEx+0x13e
04 0257f650 6d409cfc 00000001 0257f6a4 00000000 USER32!MsgWaitForMultipleObjects+0x1f
WARNING: Stack unwind information not available. Following frames may be wrong.
05 0257f720 6d6f45a9 0257f754 0257f8fc 0000000a jpiexp32!Java_sun_plugin_services_WPlatformService_waitEvent+0x2e
06 0257f79c 6d749317 0000000a 00000000 0257f844 jvm!AsyncGetCallTrace+0x1b284
07 0257f7e0 6d6f447a 6d6f447e 0257f8f4 0257f804 jvm!jmm_GetLastGCStat+0x10242
08 0257f8b0 6d6f9835 008c5880 0257f8f4 008c5330 jvm!AsyncGetCallTrace+0x1b155
09 0257f904 6d4043c2 008c5880 008c5330 008fccd9 jvm!AsyncGetCallTrace+0x20510
0a 0257f93c 6d4053d7 0257f95c 6d410954 6d410950 jpiexp32+0x43c2
0b 0257f978 6d40256d 00000000 00000000 008e1560 jpiexp32!CJSObject::Equals+0x29a
0c 0257f9a4 6d40261b 00000000 03eda1d0 00000000 jpiexp32+0x256d
0d 0257f9d0 6d4076a1 008e1560 7ea1214e 008e15e0 jpiexp32+0x261b
0e 0257fa74 7ea12513 00000001 00000000 0257fb04 jpiexp32!DllGetClassObject+0x1b31
0f 0257fa98 7ea12b0c 03eda1d0 045ff700 00000000 mshtml!COleSite::ReleaseObject+0x98
10 0257faec 7e916283 0257fb04 045b5c98 03edf0e0 mshtml!COleSite::Notify+0x5c6
We took the call stack we see that the mshtml.dll (IE module) is trying to change the readystate for the page and we see it stuck in OS waiting for
Sun VM. We cannot really say anything on what Sun VM is doing as we don’t have symbols for their modules. So either you need to investigate what’s happening in
your applet or contact Sun for this issue.
IE embed Java applet as one ActiveX control (OLE), when trying to release the OLE and invoke the functions in JPIEXP32 (JVM components), JVM stop responding and waiting for other events...
05 0257f720 6d6f45a9 0257f754 0257f8fc 0000000a jpiexp32!Java_sun_plugin_services_WPlatformService_waitEvent+0x2e
But the event will never returns so the JVM stops responding and causes IE hang. There may be one dead lock or bad design in JVM causes this issue. Please kindly troubleshot it from the Java side.