2016-03-20 4 views
2

Я действительно потерян, и я не знаю, как решать и решать мою проблему. У меня есть кусок простого кода Java, что приводит к сбою виртуальной машины Java:Лучший способ решить/отладить сбой JVM (SIGSEGV)

# 
# 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] 
... 

EDIT (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 

EDIT (3):. Ядро дамп

Итак, наконец, я создал дамп и загрузить его в Java VisualVM (я не мог использовать решение, представленное Дрой, потому что вызывая 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) 

EDIT (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}; 
} 
+0

Не могли бы вы предоставить полный 'hs_err_pid.log'? – apangin

+0

Я вставил hs_err_pid и replay_pid здесь: http://pastebin.com/sCAvSMp9 и http://pastebin.com/eUrvzt5f – Philipp

ответ

7

отчет аварии говорит об ошибке произошел в JIT компилятор тему:

Current thread (0x00007f89e481c800): JavaThread "C2 CompilerThread1" 

предпринять следующие шаги диагностируют проблемы компилятора:

  1. Попробуйте самый последнюю сборку JVM доступен в JDK-EA: https://jdk9.java.net/download/

    Если проблема исчезнет, ​​вы можете остаться с этой версией или попытаться найти точная фиксация, которая решает проблему, а затем передает ее в JDK 8. Как выполнить резервное копирование исправлений и как создать HotSpot самостоятельно - это отдельная тема, но я могу сказать, если вы заинтересованы.

  2. Если проблема не устранена, попробуйте найти проблемный метод и исключить его из компиляции.

    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 
    
  3. Если это не поможет, попробуйте исключить другие методы, предоставляя мультипликатор -XX:CompileCommand. Чтобы найти кандидатов для исключения использования -XX:+PrintCompilation и посмотрите на нижнюю часть распечатанного списка. Вы также можете исключить все классы и пакеты из компиляции, например.

    -XX:CompileCommand=exclude,com.sosse.time.timeseries.gson.*::* 
    
  4. Попробуйте отключить некоторые оптимизации компилятора по одному. Некоторые варианты попробовать являются:

    -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 
    
  5. ли найден проблемный метод/Оптимизация или нет, запустите JVM снова

    -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation 
    

    Это создаст hotspot_pid1234.log файл в текущем каталоге с подробным журналом компиляции.

  6. Отправить отчет об ошибке в bugreport.java.com. Выберите

    Product/Category: HotSpot Virtual Machine (errors) 
    Subcategory:  J2SE Server Compiler 
    

    Убедитесь, что включают в себя полный hs_err_pid.log и hotspot_pid.log с шага 5. Было бы очень полезно, если вы могли бы обеспечить пониженную автономный пример, демонстрирующий эту проблему.

    Для более быстрой реакции вы также можете отправить сообщение в список рассылки hotspot-compiler-dev.

+0

Исключая метод, JVM не разбивает nymore! Спасибо за этот намек. Попытка заставить приложение работать с Java 9, чтобы увидеть, появляется ли ошибка. Я буду держать вас в курсе. – Philipp

+0

Я не смог запустить приложение с Java 9 в соответствии с этой ошибкой: https://bugs.openjdk.java.net/browse/JDK-8152161 – Philipp

+0

В настоящее время работает над упрощенной версией приложения. Трудно, однако, потому что, если я удаляю какой-то цикл, авария исчезает. Я поддерживаю вас. – Philipp

4

Похоже на ошибку JDK JDK-6675699. Согласно отчету об ошибке, исправление для этой ошибки было передано на 8u74, 8u81 и 8u82.

Обратите внимание, что (на данный момент) конечный пользователь, сфокусированный Java Download Site, предлагает 8u73 в качестве последней версии. Вы можете получить 8u74 от Java Developer Download Site.

Если обновление до 8u74 не решает проблему, вы должны отправить это Oracle в качестве отчета об ошибке. Вероятный диагноз заключается в том, что вы запускаете код, вызывающий сбои компилятора JIT-кода, когда он пытается его скомпилировать/оптимизировать. Это то, что указывает PhaseIdealLoop::idom_no_update.

JDK-6675699 предназначен для конкретной ошибки компилятора JIT. Там могут быть другие ошибки компилятора JIT, которые не были диагностированы. Если вы отправляете новый отчет об ошибке, это может помочь сопровождающим отслеживать эти ошибки. Тем не менее, отчет об ошибках будет полезен только для них, если вы сможете предоставить достаточно информации, чтобы они могли воспроизвести вашу ошибку.

(Разумеется, также возможно, что основная причина - это нечто совершенно иное: например, что-то в коде кода стороннего производителя, который искажает структуры данных JVM, которые приводят к сбою компилятора, но это было бы огромным совпадением для повреждение, которое можно разбить на компилятор, и только компилятор.)


UPDATE - Согласно этим Release Notes, версия, которую вы на самом деле нужно, это Java SE 8u74-b32.

+0

Спасибо за ответ! Я очень это ценю, потому что я работаю над этим уже более недели. Проблема 8u74 не устраняет проблему, JVM все еще падает. – Philipp

+0

Есть ли способ использовать другой тип компилятора? Просто чтобы ограничить возможные причины. Любая идея, что я мог бы попробовать хотя бы обходной путь? Еще раз спасибо за любую помощь! – Philipp

+0

Вы можете полностью отключить компилятор JIT с помощью «-Cint». Существует целый ряд других вариантов, которые могут помочь ... если они будут использоваться соответствующим образом. http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html –

1

Я думаю, вам стоит потратить некоторое время на анализ ядра.

вина Сегментация

Есть несколько возможных причин. Может быть ошибка в самом JVM или в пакете (некоторые из них написаны на C или C++). Это также может быть связано с неправильной конфигурацией, когда несовместимые компоненты используются вместе.

Из опыта, ошибка JVM является наименее вероятной из них. Хотя @Stephen думает, что это вероятный случай здесь.

Если вы захватили трассировку стека в момент сбоя, это может дать вам некоторые подсказки относительно того, где именно происходит авария.

Во-первых, я вижу, что вам нужно confgure ulimit -c неограниченно, чтобы вы могли хранить основной файл на диске.

Анализ файла дампа
После того, как вы сделаете это, вы должны проанализировать ядро, используя следующий метод.

Для преобразования файла используйте инструмент командной строки командной строки jmap.

jmap -dump:format=b,file=dump.hprof /usr/bin/java core_file 

где:

dump.hprof этого имя файл HPROF вы хотите создать

/USR/bin/Java это путь к версии Java двоичного файла, который генерируется дамп

+0

Спасибо! Я работаю над получением дампа ядра и возвращаюсь к вам! Спасибо за быстрый ответ и помощь! – Philipp

+0

Отлично. Пожалуйста, опубликуйте свои результаты здесь. Я очень хочу посмотреть, с какими проблемами вы столкнулись с помощью Kafka. – Learner

+0

Привет, DROY! Таким образом, я создал основной дамп, что на самом деле не помогает мне выяснить, где проблема. Я добавил threaddump в сообщение, это поможет вам определить, где я должен смотреть дальше? – Philipp