# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x485a4b16, pid=2556, tid=5112 # # JRE version: 6.0_20-b02 # Java VM: Java HotSpot(TM) Server VM (16.3-b01 mixed mode windows-x86 ) # Problematic frame: # C [tcnative-1.dll+0x4b16] # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x47e3d000): JavaThread "ajp-8009-7" daemon [_thread_in_native, id=5112, stack(0x4b900000,0x4b950000)] siginfo: ExceptionCode=0xc0000005, reading address 0x00000020 Registers: EAX=0x00000000, EBX=0x0000200e, ECX=0x00000000, EDX=0x00000000 ESP=0x4b94e800, EBP=0x4b94e818, ESI=0x00000000, EDI=0x4ae2bfe8 EIP=0x485a4b16, EFLAGS=0x00010246 Top of Stack: (sp=0x4b94e800) 0x4b94e800: 00000000 00000000 4b94e820 47e3d000 0x4b94e810: 43e67730 43e67730 4b94e860 0063a484 0x4b94e820: 0000200e 4b94e868 4ae2bfe8 00000000 0x4b94e830: 00000000 0000200e 19872b78 4b94e83c 0x4b94e840: 4b94e840 00000000 4b94e87c 43e683f0 0x4b94e850: 00000000 43e67730 00000000 4b94e870 0x4b94e860: 4b94e8a0 00632f85 43e68390 00638359 0x4b94e870: 0000200e 00000000 4ae2bfe8 00000000 Instructions: (pc=0x485a4b16) 0x485a4b06: 55 18 51 8d 0c 16 8b 57 10 03 ca 8b 57 0c 51 52 0x485a4b16: ff 50 20 85 c0 75 14 03 75 08 3b f3 72 d4 85 c0 Stack: [0x4b900000,0x4b950000], sp=0x4b94e800, free space=13a4b94e33ck Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [tcnative-1.dll+0x4b16] j org.apache.tomcat.jni.Socket.sendbb(JII)I+0 j org.apache.coyote.ajp.AjpAprProcessor.flush()V+22 j org.apache.coyote.ajp.AjpAprProcessor$SocketOutputBuffer.doWrite(Lorg/apache/tomcat/util/buf/ByteChunk;Lorg/apache/coyote/Response;)I+114 j org.apache.coyote.Response.doWrite(Lorg/apache/tomcat/util/buf/ByteChunk;)V+6 j org.apache.catalina.connector.OutputBuffer.realWriteBytes([BII)V+38 j org.apache.tomcat.util.buf.ByteChunk.append([BII)V+202 j org.apache.catalina.connector.OutputBuffer.writeBytes([BII)V+15 j org.apache.catalina.connector.OutputBuffer.write([BII)V+12 j org.apache.catalina.connector.CoyoteOutputStream.write([BII)V+7 j org.apache.catalina.connector.CoyoteOutputStream.write([B)V+5 j com.fisc.ptao.common.PTNative.attachmentDataPut([BZ)V+47 v ~StubRoutines::call_stub V [jvm.dll+0x191d0c] V [jvm.dll+0x27e631] V [jvm.dll+0x191d8d] V [jvm.dll+0x19b68f] V [jvm.dll+0x19e487] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j org.apache.tomcat.jni.Socket.sendbb(JII)I+0 j org.apache.coyote.ajp.AjpAprProcessor.flush()V+22 j org.apache.coyote.ajp.AjpAprProcessor$SocketOutputBuffer.doWrite(Lorg/apache/tomcat/util/buf/ByteChunk;Lorg/apache/coyote/Response;)I+114 j org.apache.coyote.Response.doWrite(Lorg/apache/tomcat/util/buf/ByteChunk;)V+6 j org.apache.catalina.connector.OutputBuffer.realWriteBytes([BII)V+38 j org.apache.tomcat.util.buf.ByteChunk.append([BII)V+202 j org.apache.catalina.connector.OutputBuffer.writeBytes([BII)V+15 j org.apache.catalina.connector.OutputBuffer.write([BII)V+12 j org.apache.catalina.connector.CoyoteOutputStream.write([BII)V+7 j org.apache.catalina.connector.CoyoteOutputStream.write([B)V+5 j com.fisc.ptao.common.PTNative.attachmentDataPut([BZ)V+47 v ~StubRoutines::call_stub j com.fisc.ptao.common.PTNative.PTReadAttachment(JLjava/lang/String;II)I+0 j com.fisc.ptao.servlets.PTReadAttachmentServlet.doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+612 j javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+35 j javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+30 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+376 j org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101 j com.fisc.interpost.filters.LoginFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+361 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+119 j org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101 j org.apache.catalina.core.StandardWrapperValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+804 j org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+365 j org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+64 j org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+6 j org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+42 j org.apache.catalina.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+158 j org.apache.coyote.ajp.AjpAprProcessor.process(J)Z+309 j org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(J)Lorg/apache/tomcat/util/net/AprEndpoint$Handler$SocketState;+39 j org.apache.tomcat.util.net.AprEndpoint$Worker.run()V+147 j java.lang.Thread.run()V+11 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x48b16400 JavaThread "ajp-8009-9" daemon [_thread_blocked, id=5916, stack(0x4b9b0000,0x4ba00000)] 0x4989b400 JavaThread "ajp-8009-8" daemon [_thread_blocked, id=5848, stack(0x4b950000,0x4b9a0000)] =>0x47e3d000 JavaThread "ajp-8009-7" daemon [_thread_in_native, id=5112, stack(0x4b900000,0x4b950000)] 0x47e75400 JavaThread "ajp-8009-6" daemon [_thread_blocked, id=5564, stack(0x4b7a0000,0x4b7f0000)] 0x48fab400 JavaThread "File Reaper" daemon [_thread_blocked, id=4180, stack(0x4b750000,0x4b7a0000)] 0x492a4c00 JavaThread "ajp-8009-5" daemon [_thread_blocked, id=2648, stack(0x4b700000,0x4b750000)] 0x48c1a400 JavaThread "ajp-8009-4" daemon [_thread_in_native, id=2500, stack(0x4b660000,0x4b6b0000)] 0x48219000 JavaThread "ajp-8009-3" daemon [_thread_blocked, id=5060, stack(0x4b6b0000,0x4b700000)] 0x487f3400 JavaThread "ajp-8009-2" daemon [_thread_blocked, id=6028, stack(0x4b610000,0x4b660000)] 0x49498400 JavaThread "ajp-8009-1" daemon [_thread_in_native, id=1396, stack(0x4b4c0000,0x4b510000)] 0x488e5800 JavaThread "janitorThread" daemon [_thread_blocked, id=5976, stack(0x4b470000,0x4b4c0000)] 0x47fbc000 JavaThread "ajp-8009-Acceptor-0" daemon [_thread_in_native, id=1472, stack(0x4b420000,0x4b470000)] 0x488d2400 JavaThread "ajp-8009-CometPoller-7" daemon [_thread_blocked, id=5052, stack(0x4b3d0000,0x4b420000)] 0x484c8800 JavaThread "ajp-8009-CometPoller-6" daemon [_thread_blocked, id=4764, stack(0x4b380000,0x4b3d0000)] 0x48563000 JavaThread "ajp-8009-CometPoller-5" daemon [_thread_blocked, id=5244, stack(0x4b330000,0x4b380000)] 0x496ca800 JavaThread "ajp-8009-CometPoller-4" daemon [_thread_blocked, id=1536, stack(0x4b2e0000,0x4b330000)] 0x48c97800 JavaThread "ajp-8009-CometPoller-3" daemon [_thread_blocked, id=5904, stack(0x4b290000,0x4b2e0000)] 0x48b2c400 JavaThread "ajp-8009-CometPoller-2" daemon [_thread_blocked, id=5092, stack(0x4b240000,0x4b290000)] 0x4845a800 JavaThread "ajp-8009-CometPoller-1" daemon [_thread_blocked, id=1816, stack(0x4b1f0000,0x4b240000)] 0x48438800 JavaThread "ajp-8009-CometPoller-0" daemon [_thread_blocked, id=2436, stack(0x4b1a0000,0x4b1f0000)] 0x492c5800 JavaThread "ajp-8009-Poller-7" daemon [_thread_blocked, id=5536, stack(0x4b150000,0x4b1a0000)] 0x482d2800 JavaThread "ajp-8009-Poller-6" daemon [_thread_blocked, id=5576, stack(0x4b100000,0x4b150000)] 0x48c01400 JavaThread "ajp-8009-Poller-5" daemon [_thread_in_native, id=2456, stack(0x4b0b0000,0x4b100000)] 0x48380400 JavaThread "ajp-8009-Poller-4" daemon [_thread_in_native, id=4684, stack(0x4ac60000,0x4acb0000)] 0x48d07c00 JavaThread "ajp-8009-Poller-3" daemon [_thread_blocked, id=4288, stack(0x4ac10000,0x4ac60000)] 0x4886b400 JavaThread "ajp-8009-Poller-2" daemon [_thread_blocked, id=2908, stack(0x4abc0000,0x4ac10000)] 0x48be9400 JavaThread "ajp-8009-Poller-1" daemon [_thread_blocked, id=5208, stack(0x4ab70000,0x4abc0000)] 0x484f6400 JavaThread "ajp-8009-Poller-0" daemon [_thread_blocked, id=4956, stack(0x4ab20000,0x4ab70000)] 0x48304800 JavaThread "http-8080-Acceptor-0" daemon [_thread_in_native, id=5732, stack(0x4aad0000,0x4ab20000)] 0x483fe400 JavaThread "http-8080-Sendfile-0" daemon [_thread_blocked, id=5412, stack(0x4aa80000,0x4aad0000)] 0x48bb2400 JavaThread "http-8080-CometPoller-7" daemon [_thread_blocked, id=5056, stack(0x4aa30000,0x4aa80000)] 0x48331400 JavaThread "http-8080-CometPoller-6" daemon [_thread_blocked, id=4348, stack(0x4a9e0000,0x4aa30000)] 0x4835d400 JavaThread "http-8080-CometPoller-5" daemon [_thread_blocked, id=1168, stack(0x4a990000,0x4a9e0000)] 0x48b83400 JavaThread "http-8080-CometPoller-4" daemon [_thread_blocked, id=5936, stack(0x4a940000,0x4a990000)] 0x489e3800 JavaThread "http-8080-CometPoller-3" daemon [_thread_blocked, id=2956, stack(0x4a8f0000,0x4a940000)] 0x48190400 JavaThread "http-8080-CometPoller-2" daemon [_thread_blocked, id=1860, stack(0x4a8a0000,0x4a8f0000)] 0x49938400 JavaThread "http-8080-CometPoller-1" daemon [_thread_blocked, id=2180, stack(0x4a850000,0x4a8a0000)] 0x48466400 JavaThread "http-8080-CometPoller-0" daemon [_thread_blocked, id=4472, stack(0x4a800000,0x4a850000)] 0x48191400 JavaThread "http-8080-Poller-7" daemon [_thread_blocked, id=4952, stack(0x4a7b0000,0x4a800000)] 0x482d1400 JavaThread "http-8080-Poller-6" daemon [_thread_blocked, id=6024, stack(0x4a760000,0x4a7b0000)] 0x4854cc00 JavaThread "http-8080-Poller-5" daemon [_thread_blocked, id=1760, stack(0x4a510000,0x4a560000)] 0x488ec400 JavaThread "http-8080-Poller-4" daemon [_thread_blocked, id=536, stack(0x4a4c0000,0x4a510000)] 0x4857ac00 JavaThread "http-8080-Poller-3" daemon [_thread_blocked, id=4748, stack(0x4a470000,0x4a4c0000)] 0x48bb2c00 JavaThread "http-8080-Poller-2" daemon [_thread_blocked, id=5408, stack(0x4a420000,0x4a470000)] 0x4880f400 JavaThread "http-8080-Poller-1" daemon [_thread_blocked, id=6036, stack(0x4a3d0000,0x4a420000)] 0x48006400 JavaThread "http-8080-Poller-0" daemon [_thread_blocked, id=2596, stack(0x4a380000,0x4a3d0000)] 0x483a8c00 JavaThread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon [_thread_blocked, id=4516, stack(0x4a330000,0x4a380000)] 0x48334c00 JavaThread "SessionWorkerThread" daemon [_thread_blocked, id=4936, stack(0x4a2e0000,0x4a330000)] 0x4883bc00 JavaThread "ConectionPoolMgrThread" [_thread_blocked, id=2768, stack(0x4a290000,0x4a2e0000)] 0x48306400 JavaThread "LogTraceThread" daemon [_thread_blocked, id=2988, stack(0x48fd0000,0x49020000)] 0x48019400 JavaThread "GC Daemon" daemon [_thread_blocked, id=5216, stack(0x48780000,0x487d0000)] 0x47ec2400 JavaThread "Thread-2" [_thread_in_native, id=2136, stack(0x48130000,0x48180000)] 0x47e96400 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=716, stack(0x48090000,0x480e0000)] 0x47b42800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2820, stack(0x47de0000,0x47e30000)] 0x47b40c00 JavaThread "CompilerThread1" daemon [_thread_blocked, id=5856, stack(0x47d90000,0x47de0000)] 0x47b3a800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4260, stack(0x47d40000,0x47d90000)] 0x47b39000 JavaThread "Attach Listener" daemon [_thread_blocked, id=5456, stack(0x47cf0000,0x47d40000)] 0x47b36800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4804, stack(0x47ca0000,0x47cf0000)] 0x47b27800 JavaThread "Finalizer" daemon [_thread_blocked, id=4772, stack(0x47c50000,0x47ca0000)] 0x47b22c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=5340, stack(0x47c00000,0x47c50000)] 0x005f6c00 JavaThread "main" [_thread_in_native, id=1068, stack(0x00550000,0x005a0000)] Other Threads: 0x47b20000 VMThread [stack: 0x47bb0000,0x47c00000] [id=2580] 0x47b6e400 WatcherThread [stack: 0x480e0000,0x48130000] [id=1452] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Heap def new generation total 39424K, used 17871K [0x036f0000, 0x061b0000, 0x18c40000) eden space 35072K, 50% used [0x036f0000, 0x04863f10, 0x05930000) from space 4352K, 0% used [0x05d70000, 0x05d70000, 0x061b0000) to space 4352K, 0% used [0x05930000, 0x05930000, 0x05d70000) tenured generation total 87424K, used 22368K [0x18c40000, 0x1e1a0000, 0x436f0000) the space 87424K, 25% used [0x18c40000, 0x1a218108, 0x1a218200, 0x1e1a0000) compacting perm gen total 24064K, used 24039K [0x436f0000, 0x44e70000, 0x476f0000) the space 24064K, 99% used [0x436f0000, 0x44e69c68, 0x44e69e00, 0x44e70000) No shared spaces configured. Dynamic libraries: 0x00400000 - 0x0040f000 C:\apache-tomcat-6.0.26\bin\tomcat6.exe 0x7c800000 - 0x7c8c0000 C:\WINDOWS\system32\ntdll.dll 0x77e40000 - 0x77f42000 C:\WINDOWS\system32\kernel32.dll 0x77380000 - 0x77412000 C:\WINDOWS\system32\USER32.dll 0x77c00000 - 0x77c49000 C:\WINDOWS\system32\GDI32.dll 0x77f50000 - 0x77fec000 C:\WINDOWS\system32\ADVAPI32.dll 0x77c50000 - 0x77cef000 C:\WINDOWS\system32\RPCRT4.dll 0x77ba0000 - 0x77bfa000 C:\WINDOWS\system32\MSVCRT.dll 0x7c8d0000 - 0x7d0d4000 C:\WINDOWS\system32\SHELL32.dll 0x77da0000 - 0x77df2000 C:\WINDOWS\system32\SHLWAPI.dll 0x77420000 - 0x77523000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.2778_x-ww_A8F04F11\comctl32.dll 0x6db70000 - 0x6df9c000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\server\jvm.dll 0x76aa0000 - 0x76acd000 C:\WINDOWS\system32\WINMM.dll 0x7c360000 - 0x7c3b6000 C:\WINDOWS\system32\MSVCR71.dll 0x6d860000 - 0x6d86c000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\verify.dll 0x6d3e0000 - 0x6d3ff000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\java.dll 0x6d340000 - 0x6d348000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\hpi.dll 0x76b70000 - 0x76b7b000 C:\WINDOWS\system32\PSAPI.DLL 0x76f50000 - 0x76f63000 C:\WINDOWS\system32\Secur32.dll 0x6d8a0000 - 0x6d8af000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\zip.dll 0x6d6c0000 - 0x6d6d3000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\net.dll 0x71c00000 - 0x71c17000 C:\WINDOWS\system32\WS2_32.dll 0x71bf0000 - 0x71bf8000 C:\WINDOWS\system32\WS2HELP.dll 0x71b20000 - 0x71b61000 C:\WINDOWS\System32\mswsock.dll 0x76ed0000 - 0x76eff000 C:\WINDOWS\system32\DNSAPI.dll 0x76f70000 - 0x76f77000 C:\WINDOWS\System32\winrnr.dll 0x76f10000 - 0x76f3e000 C:\WINDOWS\system32\WLDAP32.dll 0x76f80000 - 0x76f88000 C:\WINDOWS\system32\rasadhlp.dll 0x6d610000 - 0x6d619000 C:\Program Files\Java\jdk1.6.0_20\jre\bin\management.dll 0x68000000 - 0x6802f000 C:\WINDOWS\system32\rsaenh.dll 0x5f270000 - 0x5f2c9000 C:\WINDOWS\system32\hnetcfg.dll 0x71ae0000 - 0x71ae8000 C:\WINDOWS\System32\wshtcpip.dll 0x485a0000 - 0x48677000 C:\apache-tomcat-6.0.26\bin\tcnative-1.dll 0x4a070000 - 0x4a0c6000 C:\Fischer\InterPostExpress\interpost\japi\japi.dll 0x4a0d0000 - 0x4a174000 c:\Fischer\InterPostExpress\interpost\japi\tao40_32.dll 0x71bb0000 - 0x71bb9000 C:\WINDOWS\system32\WSOCK32.dll 0x49040000 - 0x4904a000 c:\Fischer\InterPostExpress\interpost\japi\IMPLODE.DLL VM Arguments: jvm_args: -Dcatalina.base=C:\apache-tomcat-6.0.26 -Dcatalina.home=C:\apache-tomcat-6.0.26 -Djava.endorsed.dirs=C:\apache-tomcat-6.0.26\endorsed -Djava.io.tmpdir=C:\apache-tomcat-6.0.26\temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=C:\apache-tomcat-6.0.26\conf\logging.properties -Dcom.sun.management.jmxremote vfprintf -Xms128m -Xmx1024m java_command: <unknown> Launcher Type: generic Environment Variables: JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20 PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Diskeeper Corporation\Diskeeper\;C:\Program Files\Java\jdk1.6.0_20\bin;c:\Fischer\InterPostExpress\interpost\japi;c:\Fischer\InterPostExpress\uninstall OS=Windows_NT PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 8, GenuineIntel --------------- S Y S T E M --------------- OS: Windows Server 2003 family Build 3790 Service Pack 1 CPU:total 1 (4 cores per cpu, 1 threads per core) family 6 model 15 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 Memory: 4k page, physical 3931596k(3039332k free), swap 5346784k(4717796k free) vm_info: Java HotSpot(TM) Server VM (16.3-b01) for windows-x86 JRE (1.6.0_20-b02), built on Apr 12 2010 13:46:10 by "java_re" with MS VC++ 7.1 (VS2003) time: Wed Jul 14 12:43:58 2010 elapsed time: 7651 seconds
Using Java version 1.6.0_20
Configuration: IIS with SSL as front-end and Tomcat via ISAPI.
TCNATIVE-1.DLL version is 1.1.20
This crash is observed in the following scenario: Two user requests arrive at the server simultaneously. One is busy reading application data and returning the same to the browser. The second encounters a "busy" application state (due to first) and hence without returning any data, simply closes the output stream and returns. In our application log, I see that the second thread completes the transaction successfully (START, END with code=busy) whereas the first thread (one which is actively returning data) shows only START, which means the crash occurred while the first thread was returning data.
Fix by 1148216, Back port proposed.
*** Bug 51620 has been marked as a duplicate of this bug. ***
Created attachment 27380 [details] fix a issue of destroying a same socket more than one While my ajax web application was accessed by two browsers at the same time, tomcat sometimes crashed. When tomcat crashes at apr_pollset_remove(), fd->desc.s is NULL in do_remove() function of tomcat-native poll.c. It seems that a socket has been already destroyed. I checked which method calls destorySocket() of AprEndpoint. At line 1261 destroySocket(addS[i]), a same socket was destroyed within a second. I commented out line 1261, tomcat works fine. Before line 1261, Poll.add return value was APR_EBADF(= 9).
Sorry. I mistake. Attachment 27380 [details] is for Bug 51620.