On 26/08/2019 16:14, Eduardo Quintanilla wrote: > Any tips for building Tomcat Native on Windows 10?
https://cwiki.apache.org/confluence/display/TOMCAT/Building+the+Tomcat+Native+Connector+binaries+for+Windows You can build it with later versions of Visual Studio but that will end up creating additional dependencies on various Windows DLLs. Mark > > Best regards, > Eduardo Quintanilla > Software Developer > Block Networks<http://www.blocknetworks.com.mx/> > > From: Christopher Schultz <ch...@christopherschultz.net> > Sent: jueves, 22 de agosto de 2019 11:57 a. m. > To: users@tomcat.apache.org > Subject: Re: Tomcat 8.5 - Native Library - Crash > > > Eduardo, > > On 8/22/19 10:18, Eduardo Quintanilla wrote: >> Chris, >> >> The crash dump and logs[1] from my dev environment. >> >> [1]https://1drv.ms/u/s!AjSSUmqOgKmfi1g7z4wUvfYPksCk?e=CLH6VF > > Okay, as I suspected, it's a SIGSEGV, or what Java programmers would > call a NullPointerException. > > The C code is computing a pointer with a 44 byte offset to a NULL > pointer and trying to dereference it, which causes the problem. > > I'm not sure which field has a 44-byte offset into the structure it's > supposed to be contained in. That highly depends upon the > architecture, compiler, etc. and those are the things I don't have > access to. > > If someone in the community is able to build tcnative for Windows in > the same way[1] that the Tomcat team builds it, can you identify the > following: > > 1. What line of code corresponds to tcnative-1.dll+0x14d32 > 2. Which structure is being used > 3. Which field is 44 bytes into that structure > > Knowing all those things should make this a very easy fix. > > Of course, the "fix" will involve throwing an exception back over into > the Java space, to the application will still throw an error. But at > least it won't bring-down the whole JVM. > >>> Do you always get the "stream is not writable" error before the >>> JVM performs the crash-dump? >> >> Yes but only in the Tomcat of the production environment. > > That's ... interesting. If Tomcat knows it can't write to the > stream... why is it still writing to the stream? > > Note that the crash dump you posted is for an error in > jni.Address.get() and not the one for Socket.sendb(). If you can > generate a crash dump in Socket.sendb() that would be helpful, too. > > Also, please see: > > https://bz.apache.org/bugzilla/show_bug.cgi?id=62626 > https://bz.apache.org/bugzilla/show_bug.cgi?id=63405 > > -chris > >> >> Best regards, Eduardo Quintanilla Software Developer >> >> From: Christopher Schultz >> <ch...@christopherschultz.net<mailto:ch...@christopherschultz.net>> Sent: >> jueves, 22 de agosto de 2019 8:25 a. m. To: >> users@tomcat.apache.org<mailto:users@tomcat.apache.org> Subject: Re: Tomcat >> 8.5 - Native Library - >> Crash >> >> >> Eduardo, >> >> On 8/21/19 17:36, Eduardo Quintanilla wrote: >>> We have been getting some crashes in Tomcat 8.5.43 lately. >>> >>> The environment is: * JDK 1.8.0_202 * Windows Server 2012 R2 >>> >>> The logs shows a tcnative exception. >>> >>> Crash Log: Current thread JavaThread >>> "https-openssl-apr-8081-exec-298" daemon _thread_in_native Java >>> frames: (J=compiled Java code, j=interpreted, Vv=VM code) J >>> 15034 >>> org.apache.tomcat.jni.Socket.sendb(JLjava/nio/ByteBuffer;II)I (0 >>> bytes) @ 0x0000000002962ddf [0x0000000002962d80+0x5f] J 29164 C2 >>> org.apache.tomcat.util.net.AprEndpoint$AprSocketWrapper.doWrite(ZLjav > a >> >>> > /nio/ByteBuffer;)V >>> (242 bytes) @ 0x0000000006d6933c [0x0000000006d68b20+0x81c] J >>> 27479 C2 org.apache.tomcat.util.net.SocketWrapperBase.flush(Z)Z >>> (20 bytes) @ 0x00000000053f6144 [0x00000000053f60a0+0xa4] J 24666 >>> C2 >>> org.apache.coyote.http2.Http2OutputBuffer.doWrite(Ljava/nio/ByteBuffe > r >> >>> > ;)I >>> (28 bytes) @ 0x0000000006b51b74 [0x0000000006b51660+0x514] J >>> 24689 C2 >>> org.apache.catalina.connector.OutputBuffer.writeBytes([BII)V (38 >>> bytes) @ 0x00000000031c09f8 [0x00000000031c04c0+0x538] J 27348 >>> C2 org.apache.catalina.connector.CoyoteOutputStream.write([BII)V >>> (26 bytes) @ 0x00000000071d51a8 [0x00000000071d5120+0x88] >> >> What's the actual error? Can you post the entire crash dump? >> >>> Tomcat logs: org.apache.catalina.connector.ClientAbortException: >>> org.apache.coyote.CloseNowException: Connection [214], Stream >>> [279], This stream is not writable >> >> Do you always get the "stream is not writable" error before the >> JVM performs the crash-dump? >> >> I believe there is at least one lingering SEGV hiding in >> Socket.sendb(), possibly only on Windows. I don't have a Windows >> development environment to be able to disassemble the crash dump >> and locate the line of code being executed when the SEGV occurs, so >> I have added NULL-checks to everything I can find in there but it >> looks like it's not enough. Something is missing, somewhere. >> >> -chris >> >> >> >> The information transmitted is intended only for the person or >> entity to which it is addressed and may contain confidential and/or >> privileged material. Any review, retransmission, dissemination or >> other use of, or taking of any action in reliance upon, this >> information by persons or entities other than the intended >> recipient is prohibited. If you received this in error, please >> contact the sender and delete the material from any computer. La >> información transmitida está destinada únicamente a la persona o >> entidad a quien que va dirigida y puede contener información >> confidencial y/o material privilegiado. Cualquier revisión, >> retransmisión, difusión u otros usos, o cualquier acción tomada por >> personas o entidades distintas al destinatario basándose en esta >> información está prohibida. Si usted recibe este mensaje por error, >> por favor contacte al remitente y elimine el material de cualquier >> computadora. >> > > > > The information transmitted is intended only for the person or entity to > which it is addressed and may contain confidential and/or privileged > material. Any review, retransmission, dissemination or other use of, or > taking of any action in reliance upon, this information by persons or > entities other than the intended recipient is prohibited. If you received > this in error, please contact the sender and delete the material from any > computer. > La información transmitida está destinada únicamente a la persona o entidad a > quien que va dirigida y puede contener información confidencial y/o material > privilegiado. Cualquier revisión, retransmisión, difusión u otros usos, o > cualquier acción tomada por personas o entidades distintas al destinatario > basándose en esta información está prohibida. Si usted recibe este mensaje > por error, por favor contacte al remitente y elimine el material de cualquier > computadora. > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org