Domanda

Quando una VM Java si arresta in modo anomalo con un EXCEPTION_ACCESS_VIOLATION e produce un file hs_err_pidXXX.log, cosa indica? L'errore stesso è sostanzialmente un'eccezione puntatore null. È sempre causato da un bug nella JVM o ci sono altre cause come conflitti hardware o software difettosi?

Modifica: esiste un componente nativo, questa è un'applicazione SWT su win32.

È stato utile?

Soluzione

Il più delle volte si tratta di un bug nella VM. Ma può essere causato da qualsiasi codice nativo (ad es. Chiamate JNI).

Il file hs_err_pidXXX.log dovrebbe contenere alcune informazioni su dove si è verificato il problema.

Puoi anche controllare " Heap " sezione all'interno del file. Molti dei bug delle macchine virtuali sono causati dalla garbage collection (specialmente nelle macchine virtuali più vecchie). Questa sezione dovrebbe mostrare se la spazzatura era in esecuzione al momento del crash. Anche questa sezione mostra se alcune sezioni dell'heap sono riempite (i numeri percentuali).

La VM ha anche molte più probabilità di bloccarsi in una situazione di memoria insufficiente rispetto al resto.

Altri suggerimenti

Risposta trovata!

Ho avuto lo stesso errore e ho notato che altri che hanno fornito il contenuto del file di registro pid eseguivano Windows a 64 bit. Proprio come me. Nel file di registro finale, includeva l'istruzione PATH. Lì ho potuto vedere C: \ Windows \ SysWOW64 è stato erroneamente elencato prima di:% SystemRoot% \ system32. Una volta corretto, l'eccezione è scomparsa.

La prima cosa da fare è aggiornare la tua JVM alla versione più recente che puoi.

Puoi ripetere il problema? O sembra accadere casualmente? Di recente abbiamo avuto un problema a causa del quale la nostra JVM andava in crash dappertutto, in momenti casuali. Si è scoperto che era un problema hardware. Abbiamo inserito le unità in un nuovo server che è andato completamente via.

In conclusione, la JVM non dovrebbe mai andare in crash, come il poster sopra menzionato se non si esegue alcuna JNI, il mio istinto è che hai un problema hardware.

La causa del problema verrà documentata nel file hs_err *, se sai cosa cercare. Dai un'occhiata e, se non è ancora chiaro, considera di pubblicare le prime 5 o 10 righe della traccia dello stack e altre informazioni pertinenti (non pubblicare l'intera cosa, ci sono tonnellate di informazioni che non ti aiuteranno - ma devi capire quale è importante :-))

Stai utilizzando un widget Browser ed esegui javascript nel widget Browser? In tal caso, ci sono bug in alcune versioni di SWT che causano l'arresto anomalo della JVM nel codice nativo, in varie librerie di Windows.

Due esempi (che ho aperto) sono bug 217306 e bug 127960 . Queste due segnalazioni di bug, tuttavia, non sono le uniche segnalazioni di arresto anomalo della JVM in SWT.

Se non stai utilizzando il widget Browser, questi suggerimenti non ti aiuteranno. In tal caso, puoi cercare un elenco di bug SWT che causano un arresto anomalo della JVM . Se nessuno di questi è un problema, ti consiglio vivamente di aprire una segnalazione di bug con SWT.

Ho lo stesso problema con un'applicazione JNLP che utilizzo da molto tempo ed è abbastanza affidabile. Il problema è iniziato subito dopo l'aggiornamento da Windows 7 a Windows 10. Secondo la mia indagine, molto probabilmente è un bug in Win 10.

Quanto segue non è una soluzione, ma una brutta soluzione. Nella directory jre / bin, c'è javaws.exe . Se ho fatto clic con il pulsante destro del mouse / Proprietà / Compatibilità e ho selezionato Esegui questo programma come amministratore , l'app JNLP ha iniziato a funzionare.

Tieni presente che questo approccio potrebbe causare problemi di sicurezza e utilizzarlo solo se non hai altre opzioni e il 100% sa cosa stai facendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top