Лучший способ решить / отладить сбой JVM (SIGSEGV)
Я действительно потерян, и я не знаю, как решить и решить мою проблему. У меня есть кусок простого кода Java, который приводит к сбою JVM:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00000001057ce9d4, pid=10727, tid=18947
#
# JRE version: Java(TM) SE Runtime Environment (8.0_73-b02) (build 1.8.0_73-b02)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.73-b02 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x3ce9d4] PhaseIdealLoop::idom_no_update(Node*) const+0x12
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007feeef003800): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=18947, stack(0x0000700000ec4000,0x0000700000fc4000)]
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000008
Я понятия не имею, как решить проблему. Программа довольно проста, она получает сообщение через Kafka и запускает задачи на основе полученного сообщения. Если добавить две разные задачи, программа вылетает после 900 - 1500 сообщений. Все сообщения одинаковы, и программа не использует никаких JNI-компонентов (насколько я знаю, используемые сторонние библиотеки также не используют JNI).
Я никогда не сталкивался с этой проблемой, но мне бы очень хотелось / нужно найти способ выяснить, в чем проблема. Я уже использовал другие версии JVM (Java 8.0_66, 8.0_73-b02 и 8.0_74-b02). Так что я могу сделать? Спасибо вам большое!
РЕДАКТИРОВАТЬ (1): Иногда я также получаю следующую ошибку / информацию:
...
# JRE version: Java(TM) SE Runtime Environment (8.0_73-b02) (build 1.8.0_73-b02)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.73-b02 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x3ce9d4]
...
РЕДАКТИРОВАТЬ (2): я обновил свою версию Java до 8.0_74. Ошибка все еще есть:(.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00000001073cdef8, pid=11227, tid=19715
#
# JRE version: Java(TM) SE Runtime Environment (8.0_74-b02) (build 1.8.0_74-b02)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.74-b02 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x3cdef8] PhaseIdealLoop::idom_no_update(Node*) const+0x12
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f89e481c800): JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=19715, stack(0x000070000104a000,0x000070000114a000)]
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000008
РЕДАКТИРОВАТЬ (3): основной дамп
Наконец, я создал дамп ядра и загрузил его в Java VisualVM (я не мог использовать решение, представленное DROY, потому что вызов jmap приводил к другой ошибке: "Ошибка подключения к файлу ядра: невозможно подключить к файлу ядра"). Threaddump, созданный с помощью VisualVM, приводит к:
Thread 30239 "Keep-Alive-Timer": (state = BLOCKED)
at java.lang.Thread.sleep(Native Method)
at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172)
at java.lang.Thread.run(Thread.java:745)
Thread 29699 "threadDeathWatcher-4-1": (state = BLOCKED)
at java.lang.Thread.sleep(Native Method)
at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:137)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:745)
Thread 26635 "nioEventLoopGroup-3-1": (state = IN_NATIVE)
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:117)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x00000006c049ec98> (a io.netty.channel.nio.SelectedSelectionKeySet)
- locked <0x00000006c049ec88> (a java.util.Collections$UnmodifiableSet)
- locked <0x00000006c049ecb8> (a sun.nio.ch.KQueueSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:622)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:310)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:110)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:745)
Thread 29187 "pool-3-thread-1": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:63)
at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:33)
at kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:66)
at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:58)
at com.sosse.common.messaging.DefaultHandler.doRun(DefaultHandler.java:22)
at com.sosse.common.concurrency.DefaultRunnable.run(DefaultRunnable.java:11)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thread 28675 "pool-4-thread-1": (state = BLOCKED)
at java.lang.Thread.sleep(Native Method)
at io.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:461)
at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:360)
at java.lang.Thread.run(Thread.java:745)
Thread 28163 "ConsumerFetcherThread-analytics-group_Philipp.local-1458441725398-581eabc3-0-0": (state = IN_NATIVE)
at sun.nio.ch.Net.poll(Native Method)
at sun.nio.ch.SocketChannelImpl.poll(SocketChannelImpl.java:954)
- locked <0x00000006c056d538> (a java.lang.Object)
at sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:204)
- locked <0x00000006c056d5b8> (a java.lang.Object)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
- locked <0x00000006c056d5f8> (a sun.nio.ch.SocketAdaptor$SocketInputStream)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)
- locked <0x00000006c056d618> (a java.lang.Object)
at kafka.utils.Utils$.read(Utils.scala:380)
at kafka.network.BoundedByteBufferReceive.readFrom(BoundedByteBufferReceive.scala:54)
at kafka.network.Receive$class.readCompletely(Transmission.scala:56)
at kafka.network.BoundedByteBufferReceive.readCompletely(BoundedByteBufferReceive.scala:29)
at kafka.network.BlockingChannel.receive(BlockingChannel.scala:111)
at kafka.consumer.SimpleConsumer.liftedTree1$1(SimpleConsumer.scala:71)
at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRequest(SimpleConsumer.scala:68)
- locked <0x00000006c056d6e0> (a java.lang.Object)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SimpleConsumer.scala:112)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:112)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:112)
at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply$mcV$sp(SimpleConsumer.scala:111)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:111)
at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:111)
at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33)
at kafka.consumer.SimpleConsumer.fetch(SimpleConsumer.scala:110)
at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:94)
at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:86)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
Thread 27651 "analytics-group_Philipp.local-1458441725398-581eabc3-leader-finder-thread": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:61)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
Thread 27139 "analytics-group_Philipp.local-1458441725398-581eabc3_watcher_executor": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2163)
at kafka.consumer.ZookeeperConsumerConnector$ZKRebalancerListener$$anon$1.run(ZookeeperConsumerConnector.scala:544)
Thread 26115 "kafka-consumer-scheduler-0": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thread 25603 "main-EventThread": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:494)
Thread 25091 "main-SendThread(localhost:2181)": (state = IN_NATIVE)
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:117)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x00000006c0022c50> (a sun.nio.ch.Util$2)
- locked <0x00000006c0022c60> (a java.util.Collections$UnmodifiableSet)
- locked <0x00000006c0022c00> (a sun.nio.ch.KQueueSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:349)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
Thread 24579 "ZkClient-EventThread-16-localhost:2181": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at org.I0Itec.zkclient.ZkEventThread.run(ZkEventThread.java:67)
Thread 24067 "metrics-meter-tick-thread-2": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thread 23555 "metrics-meter-tick-thread-1": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Thread 23303 "pool-1-thread-1": (state = BLOCKED)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
VM Thread 20995 "Service Thread": (state = BLOCKED)
VM Thread 20483 "C1 CompilerThread3": (state = BLOCKED)
VM Thread 19971 "C2 CompilerThread2": (state = IN_NATIVE)
VM Thread 19459 "C2 CompilerThread1": (state = IN_NATIVE)
VM Thread 18947 "C2 CompilerThread0": (state = IN_NATIVE)
Thread 15887 "Signal Dispatcher": (state = BLOCKED)
Thread 14339 "Finalizer": (state = BLOCKED)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000006c005fa88> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000006c005fa88> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
Thread 13827 "Reference Handler": (state = BLOCKED)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000006c0029358> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x00000006c0029358> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
Thread 2823 "main": (state = BLOCKED)
at java.lang.Thread.sleep(Native Method)
at com.sosse.analytics.ActivityProducer.sleep(ActivityProducer.java:110)
at com.sosse.analytics.DemoMain$1.startApplication(DemoMain.java:37)
at com.sosse.common.application.DefaultApplication.start(DefaultApplication.java:166)
- locked <0x00000006c00e6080> (a java.lang.Thread)
at com.sosse.common.application.DefaultApplication.start(DefaultApplication.java:118)
at com.sosse.analytics.DemoMain.main(DemoMain.java:48)
РЕДАКТИРОВАТЬ (4): десериализатор исходного кода
public static Object[] deserialize(final JsonElement jsonElement, final JsonDeserializationContext context, final BiFunction<Class<?>, JsonElement, Serializable[]> timeSeriesDeserializer) {
final JsonObject jsonObject = jsonElement.getAsJsonObject();
// get the important classes
final Class<?> bucketContent = resolveClass("bucketContent", jsonObject, context);
// configuration
final TimeUnit timeUnit = context.deserialize(jsonObject.get("timeUnit"), TimeUnit.class);
final int bucketSize = context.deserialize(jsonObject.get("bucketSize"), int.class);
final boolean fillNumberWithZero = context.deserialize(jsonObject.get("fillNumberWithZero"), boolean.class);
// the values
final Long now = context.deserialize(jsonObject.get("now"), Long.class);
final Serializable[] timeSeries = timeSeriesDeserializer.apply(bucketContent, jsonObject.get("timeSeries"));
@SuppressWarnings("unchecked")
final BucketTimeSeriesConfig config = new BucketTimeSeriesConfig(bucketContent, timeUnit, timeSeries.length, bucketSize, fillNumberWithZero);
return new Object[]{config, timeSeries, now};
}
3 ответа
Отчет о сбое сообщает, что ошибка произошла в потоке JIT-компилятора:
Current thread (0x00007f89e481c800): JavaThread "C2 CompilerThread1"
Выполните следующие шаги для диагностики проблем компилятора:
Попробуйте самую последнюю сборку JVM, доступную в EA JDK 9: https://jdk9.java.net/download/
Если проблема исчезнет, вы можете либо остаться с этой версией, либо попытаться найти точный коммит, который решает проблему, а затем перенести его обратно в JDK 8. Как сделать бэкпорт для исправлений и как создать HotSpot самостоятельно - это отдельная тема, но я могу расскажите, если вы заинтересованы.
Если проблема не устранена, попробуйте найти проблемный метод и исключите его из компиляции.
Current CompileTask: C2: 114667 5303 4 com.sosse.time.timeseries.gson.TypeConverterHelper::deserialize (157 bytes)
Похоже, в вашем случае он не компилируется
TypeConverterHelper.deserialize()
, Добавьте следующую опцию JVM, чтобы исключить этот конкретный метод:-XX:CompileCommand=exclude,com.sosse.time.timeseries.gson.TypeConverterHelper::deserialize
Если это не помогает, попробуйте исключить больше методов, предоставив несколько
-XX:CompileCommand
, Чтобы найти кандидатов исключить использование-XX:+PrintCompilation
и посмотрите внизу распечатанного списка. Вы также можете исключить целые классы и пакеты из компиляции, например-XX:CompileCommand=exclude,com.sosse.time.timeseries.gson.*::*
Попробуйте отключить определенные оптимизации компилятора одну за другой. Некоторые варианты попробовать:
-XX:-DoEscapeAnalysis -XX:LoopUnrollLimit=0 -XX:-PartialPeelLoop -XX:-UseLoopPredicate -XX:-LoopUnswitching -XX:-ReassociateInvariants -XX:MaxInlineLevel=1 -XX:-IncrementalInline -XX:-RangeCheckElimination -XX:-EliminateAllocations -XX:-UseTypeProfile -XX:AliasLevel=0
Независимо от того, найден проблемный метод или оптимизация, снова запустите JVM с
-XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation
Это создаст
hotspot_pid1234.log
файл в текущем каталоге с подробным журналом компиляции.Отправьте отчет об ошибке на http://bugreport.java.com/. Выбрать
Product/Category: HotSpot Virtual Machine (errors) Subcategory: J2SE Server Compiler
Не забудьте включить полный
hs_err_pid.log
а такжеhotspot_pid.log
из шага 5. Было бы очень полезно, если бы вы могли привести сокращенный автономный пример, демонстрирующий проблему.Для более быстрой реакции вы также можете отправить сообщение в список рассылки hotspot-compiler-dev.
Похоже, ошибка JDK JDK-6675699. Согласно сообщению об ошибке, исправление для этой ошибки было перенесено в 8u74, 8u81 и 8u82.
Обратите внимание, что (на данный момент) сайт загрузки Java, ориентированный на конечных пользователей, предлагает 8u73 в качестве последней версии. Вы можете получить 8u74 с сайта загрузки Java Developer.
Если обновление до 8u74 не решает проблему, вы должны отправить это в Oracle в виде отчета об ошибке. Вероятный диагноз состоит в том, что вы запускаете код, вызывающий сбой компилятора кода JIT при попытке его компиляции / оптимизации. Это то что PhaseIdealLoop::idom_no_update
указывает.
JDK-6675699 относится к конкретной ошибке компилятора JIT. Вполне могут быть и другие ошибки JIT-компилятора, которые не были диагностированы. Если вы отправите новый отчет об ошибке, это может помочь сопровождающим отследить эти ошибки. Тем не менее, отчет об ошибке будет полезен только для них, если вы сможете предоставить достаточно информации, чтобы они могли воспроизвести вашу ошибку.
(Конечно, также возможно, что основная причина - это что-то совершенно иное; например, что-то в вашем коде, коде третьей стороны, который повреждает структуры данных JVM, что приводит к сбою компилятора. Но это было бы огромным совпадением для повторных ошибок сломать компилятор... и только компилятор.)
ОБНОВЛЕНИЕ - Согласно этим примечаниям к выпуску, версия, которая вам на самом деле нужна, - это Java SE 8u74-b32.
Я думаю, вы должны потратить некоторое время на анализ ядра.
Ошибка сегментации
Есть несколько возможных причин для этого. Может быть ошибка в самой JVM или в пакете (некоторые из них написаны на C или C++). Это также может быть связано с неправильной конфигурацией, когда несовместимые компоненты используются вместе.
Из опыта, ошибка JVM является наименее вероятной из них. Хотя @Stephen считает, что это вероятный случай здесь.
Если вы фиксируете трассировку стека в точке сбоя, это может дать вам некоторые подсказки относительно того, где именно происходит сбой.
Во-первых, я вижу, что вам нужно сконфигурировать ulimit -c unlimited для того, чтобы вы могли сохранить файл ядра на диск.
Анализировать основной файл
Как только вы это сделаете, вы должны проанализировать ядро, используя следующий метод.
Для преобразования файла используйте инструмент командной строки jmap.
jmap -dump:format=b,file=dump.hprof /usr/bin/java core_file
где:
dump.hprof - это имя файла hprof, который вы хотите создать
/usr/bin/java - это путь к версии двоичного файла java, который генерировал дамп ядра