PDA

View Full Version : [JAVA] Fatal Error durante l'esecuzione di un programma


Lim
04-03-2014, 06:31
Ho scritto un software che sfrutta l'elaborazione parallela mediante il multithreading in Java. Questo software è un pratica un simulatore fisico che gestisce un numero elevato di particelle (centinaia di migliaia).
Poiché ho la necessità di eseguire molte simulazioni in condizioni differenti, ad ogni batteria di test ne lancio tra le 10 e le 20, ognuna su un PC diverso.
Queste macchine sono normali PC desktop con core i7 a 3,4GHz (8 core totali grazie all'HT) e con un quantitativo di RAM variabile tra i 16GB ed i 32GB. I PC sono tutti grosso modo identici (acquistati mediante lo stesso ordine, quindi hanno stesso modello di MB, RAM, HD, CPU ecc...).
Lancio su ogni macchina lo stesso file JAR, alterando soltanto qualche parametro nel file di configurazione che il SW legge in fase di inizializzazione. Il sistema operativo utilizzato è Ubuntu server 12.10 e tutte hanno la stessa versione di JVM (ver.7 della Oracle).

In linea teorica, le elaborazioni avvengono tutte nelle medesime condizioni, ma invece accade che sempre sullo stesso PC l'elaborazione si arresta a causa di un Fatal Error:


# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f1901a23267, pid=1660, tid=139745156093696
#
# JRE version: 7.0_10-b10
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x339267] CardTableExtension::scavenge_contents_parallel(ObjectStartArray*, MutableSpace*, HeapWord*, PSPromotionManager*, unsigned int, unsigned int)+0x1c7
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /hs_err_pid1660.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp


Comincio a pensare che ci sia un problema HW. Ho eseguito un memtest (24 ore di test) ma non ha rilevato nulla. Una volta però ho ricevuto un errore diverso (non ricordo esattamente il messaggio) che diceva che il core#3 era bloccato e in effetti mediante TOP potevo constatare che tutti i core erano attivi all'80-90% mentre il core#3 era allo 0%.

Posso ipotizzare un problema alla scheda madre o alla CPU? Posso fare qualcosa per identificare meglio l'errore? Io tenderei ad escludere problemi al codice del mio simulatore, visto che è un errore sistematico che affligge solo questa macchina.


P.S. Il Fatal Error che ho incollato qui sopra è solo uno dei tanti, ogni volta ne ricevo uno diverso.

Daniels118
04-03-2014, 07:35
Qui c'è una persona che ha risolto modificando la configurazione della jvm, ma ad altri non ha funzionato... vale comunque la pena provare: http://stackoverflow.com/questions/2299250/java-vm-reproducable-sigsegv-on-both-1-6-0-17-and-1-6-0-18-how-to-report