2016-06-27 5 views
2

JVM время от времени аварийно падает. Проблемным фреймом в журнале сбоев JVM является libzip.so, а ошибка SIGSEGV. Это происходит в Tomcat 7 и JDK 7JVM Crash with SIGSEGV - проблематичная рамка - libzip.so

Вот трассировки стека для справки:

стека: [0x00007f68b999c000,0x00007f68b9a9d000], зр = 0x00007f68b9a99770,

свободного пространства = 1013k коренных кадров: (J = составлен Java-код, J = интерпретированы, Vv = ВМ код, С = машинный код) С [libzip.so + 0x8099] deflate_slow + 0x49 С

[libzip.so + 0x7433] выкачать + 0x163 С [libzip .so + 0x3049]

Java_java_util_zip_Deflater_deflateBytes + 0x269 J java.util.zip.Deflater.deflateBytes (Дж [BIII) I + J 0 3307 С2 java.util.zip.GZIPOutputStream.finish() V (135 байт) @

орг .apache.coyote.http11.filters.FlushableGZIPOutputStream.finish() V + 9 j org.apache.coyote.http11.filters.GzipOutputFilter.end() J + 26 j org.apache.coyote.http11.AbstractOutputBuffer.endRequest() V + 43 J 2372 С2

org.apache.coyote.http11.AbstractHttp11Processor.action (Lorg/Apache/койота/ActionCode; Ljava/языки/объекта;) V (602 байт) @ 0x00007f6a4d759c84 [0x00007f6a4d759a80 + 0x204] J 2733 С2 org.apache.coyote.Response.action (Lorg/Apache/койота/ActionCode; Ljava/языки/объекта;) V

(37 байт) @ 0x00007f6a4d8b9ad0 [0x00007f6a4d8b9a80 + 0x50] J орг .apache.coyote.Response.finish() V + 5 j org.apache.catalina.connector.OutputBuffer.close() V + 138 j org.apache.catalina.connector.CoyoteWriter.close() V + 4 j org.apache.catalina.core.ApplicationDispatcher.doForward (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse;) V + 467 J org.apache.catalina.core.ApplicationDispatcher.forward (Ljavax/сервлет/ServletRequest; Ljavax/servlet/ServletResponse;) V + 55 j org.apache.struts.acti on.RequestProcessor.doForward (Ljava/lang/String; Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) V + 56 j org.apache.struts.tiles.TilesRequestProcessor.doForward (Ljava/lang/String; Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) V + 23 j org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition (Ljava/lang/String; ZLjavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) Z + 385 j org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig (Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse; Lorg/apache/struts/config/ForwardConfig;) V + 74 j org.apache.struts.action.RequestProcessor.process (Ljavax/servlet/http/HttpServ letRequest; Ljavax/servlet/http/HttpServletResponse;) V + 267 j org.apache.struts.action.ActionServlet.process (Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) V + 40 j org.apache.struts.action.ActionServlet.doGet (Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) V + 3 j javax.servlet.http.HttpServlet.service (Ljavax/servlet/http/HttpServletRequest; Ljavax/servlet/http/HttpServletResponse;) V + 35 j javax.servlet.http.HttpServlet.сервис (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse;) V + 30 J 2406 С2 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse;) V (624 байт) @ 0x00007f6a4d7760e4 [0x00007f6a4d775da0 + 0x344] J 2407 С2 org.apache.catalina.core.ApplicationFilterChain.doFilter (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse;) V (105 байт) @ 0x00007f6a4d5b2154 [0x00007f6a4d5b2120 + 0x34] j org.apache.tomcat.websocket.server.WsFilter.doFilter (Ljavax/servlet/ServletRequest; Ljavax/servlet/ServletResponse; Ljavax/servlet/FilterChain;) V + 21 J 2406 C2 org.apache. catalina.core.ApplicationFilterChain.internalDoFilter (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResp onse;) V (624 байт) @ 0x00007f6a4d775f28 [0x00007f6a4d775da0 + 0x188] J 2407 С2 org.apache.catalina.core.ApplicationFilterChain.doFilter (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse;) V (105 байт) @ 0x00007f6a4d5b2154 [0x00007f6a4d5b2120 + 0x34] j org.apache.catalina.core.ApplicationDispatcher.invoke (Ljavax/servlet/ServletRequest; Ljavax/servlet/ServletResponse; Lorg/apache/catalina/core/ApplicationDispatcher $ State;) V + 393 J

org.apache.catalina.core.ApplicationDispatcher.processRequest (Ljavax/сервлет/ServletRequest; Ljavax/сервлет/ServletResponse; Lorg/Apache/Catalina/ядро ​​/ ApplicationDispatcher $ State;) V + 98

Эта проблема возникает только после перехода на JDK 7 + Tomcat7. Он работал отлично в нижних версиях. Буду признателен за любую оказанную помощь.

ответ

0

Поскольку в трассировке стека есть jni-вызов, попробуйте запустить jvm с опцией -Xcheck:jni (я не уверен, обнаружит ли он некоторые ошибки в вашем случае).

Эта авария возникает при сжатии выходного потока в фильтре котла. Вы можете отключить сжатие в разъем (here)

Кроме того, как я вижу, происходит ошибка в deflate_slow метод, вы можете отключить GzipOutputFilter и кот создать свой собственный фильтр с DeflaterOutputStream и установить степень сжатия между 1-3 (В этом случае deflate_fast метод будет выбран в горячем месте)

0

Используйте -Dsun.zip.disableMemoryMapping = true, чтобы избежать такого сбоя, JDK9 имеет лучший механизм для обработки таких сбоев. Если это возможно, обновите его, чтобы использовать JDK9