Keine Core-Dump Datei

Antworten
Nachricht
Autor
Tobi1987
Beiträge: 14
Registriert: 31. Jul 2007 8:53

Keine Core-Dump Datei

#1 Beitrag von Tobi1987 » 14. Sep 2007 15:49

hallo,
wenn ich mein c-programm compiliere einsteht ein fehler.
um den fehler genauer orten zu können muss ich den gdb mit meiner binärdatei und der *.core datei füttern.

ich kompiliere mein prog mit folgendem kommando:

Code: Alles auswählen

gcc -g -o sample sample.c
wenn ich dann meine binärdatei ausführe bekomme ich einen segmentation fault.
leider wird mir keine sample.core datei erstellt.

was mache ich falsch??

mfg

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 14. Sep 2007 17:56

Man kann mit ulimit einige Maximalwerte für Prozesse festlegen, die von der aktuellen Shell und ihren Abkömmlingen aus gestartet werden. Vermutlich ist die Core Dump Size auf 0 gestellt.

Code: Alles auswählen

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 4095
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 400
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
$ man ulimit
...Aha!
$ ulimit -c 1000
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Tobi1987
Beiträge: 14
Registriert: 31. Jul 2007 8:53

#3 Beitrag von Tobi1987 » 15. Sep 2007 13:20

thx

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#4 Beitrag von hjb » 02. Nov 2007 18:46

Hi!

So langsam drehe ich durch. Ich habe in /proc/sys/kernel/core_pattern einen Namen in einem Verzeichnis eingetragen, das für einen bestimmten User schreibbar ist. ulimit -c auf z.B. 100000 oder unlimited gesetzt. Egal welches Signal ich schicke (6 oder 11 z.B.), ich bekomme keinen Coredump. Auch von anderen Programmen nicht. Was kann es denn noch für Einschränkungen geben, dass es nicht funktioniert?

Der Kernel kann Core-Dateien erzeugen, denn immerhin liefert bash einen Core: kill -11 $$ funktioniert.

Habe ich im Programm versehentlich Coredumps abgeschaltet? Ich rufe explizit setrlimit auf, um die Core-Größe auf unlimited zu setzen.

Grüße,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

Problem gelöst

#5 Beitrag von hjb » 14. Nov 2007 17:18

Hi!

Es handelte sich um einen Daemon, muss ich dazu sagen. Nun ist es seit einiger Zeit so, dass Programmen, die ihre uid wechseln, das Recht zum Coredump entzogen wird. Abhilfe lässt sich mit

Code: Alles auswählen

echo 1 > /proc/sys/fs/suid_dumpable
schaffen.

Man kann den Wert auch programmatisch ändern, dazu gibt es die Sysctl-Variable fs.suid_dumpable (wird aber nicht empfohlen).

Grüße,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Antworten