web-dev-qa-db-fra.com

Échec de l'écriture du core dump. Les vidages mémoire ont été désactivés

J'ai travaillé sur un projet de vision et utilisé des bibliothèques C++ en Java par JNI.

OS: Ubuntu 12.04

Dans mon projet, j'utilise boost library pour générer un nombre aléatoire. Mais parfois, je reçois une exception comme suit:

Core dum140002367330048 also had an error]
#
# A fatal error has been detected by the Java Runtime Environment:    
#
#  SIGSEGV (0xb) at pc=0x00007f54f72a615a, pid=11979, tid=140002352568064
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-AMD64 compressed oops)
# Problematic frame:
# C  [libCBIR.so+0x3215a]  boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>::operator()()+0x3a
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

Lorsque j'ai recherché cela sur StackOverflow, j'ai découvert quelques problèmes liés à IDE (Eclipse). L'application est indépendante de l'IDE. La solution doit donc également être indépendante de l'EDI. Des idées?

15
Omurhan Soysal

Je vivais le même problème.

Comme, l'erreur elle-même suggère -

Échec de l'écriture du core dump. Les vidages mémoire ont été désactivés. Pour activer le dumping, essayez ulimit -c unlimited avant de relancer Java.

ulimit obtient et définit les limites utilisateur. Pour plus d'informations sur ulimit do -

man ulimit

Alors, ouvrez un terminal et lancez -

ulimit -c unlimited

Cela devrait résoudre le problème. Pour vérifier si le changement a réussi, lancez -

ulimit -c -l

Cela devrait vous donner une sortie comme suit -

core file size          (blocks, -c) unlimited
max locked memory       (kbytes, -l) 64

Si le problème persiste, reportez-vous à this et this from askUbuntu .

19
UrsinusTheStrong

Un vidage mémoire ou un vidage sur incident est un instantané de la mémoire d'un processus en cours d'exécution. Le système d'exploitation peut créer automatiquement un vidage de la mémoire lorsqu'une erreur fatale ou non gérée (par exemple, un signal ou une exception système) se produit. 

pour plus d'informations https://docs.Oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html

0
vishnu singh