Keine Core-Dump Datei

Post Reply
Message
Author
Tobi1987
Posts: 14
Joined: 31. Jul 2007 8:53

Keine Core-Dump Datei

#1 Post by Tobi1987 »

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: Select all

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

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: Select all

$ 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
Posts: 14
Joined: 31. Jul 2007 8:53

#3 Post by Tobi1987 »

thx

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

#4 Post by hjb »

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?

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Problem gelöst

#5 Post by hjb »

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: Select all

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?

Post Reply