ubuntu, wenn die core-dump ist nicht passiert, wenn das Programm lief als root(mit sudo)
wenn ich lief ein Programm, das den "segmentation fault" als root-Benutzer , der Kern wird nicht weggeworfen.. überprüfte ich die ulimit -c und es ist unbegrenzt...Aber wenn ich lief, wie ein normaler Benutzer das Programm dumping-Kern..
suresh@suresh-desktop:~$ ulimit -c
unlimited
suresh@suresh-desktop:~$ ./main
Segmentation fault (core dumped)
suresh@suresh-desktop:~$ sudo ./main
Segmentation fault
suresh@suresh-desktop:~$
root@suresh-desktop:~# ulimit -c unlimited
root@suresh-desktop:~# ./main
Segmentation fault
//main.c
main()
{
*((int *)0xb80000) = 123;
}
root@suresh-desktop:~# ulimit -a -S
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
root@suresh-desktop:~# ulimit -a -H
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
- Ich arbeite immer noch daran, Sie zu finden eine Lösung. Ich entfernte meine Antwort, wie es nicht dein problem lösen.
- Was bedeutet "ulimit-a -S' und 'ulimit-a -H' geben Sie, wenn Sie als root angemeldet sind?
- Hat diese Anwendung daemonize sich durch eine chance?
- Nein.. ich habe geschrieben der code
- Können Sie aktualisieren die Frage mit der Ausgabe von ulimit-a -H, die paxdiablo vorgeschlagen, damit es überprüft werden kann, dass Sie nicht eingeschränkt, durch eine hart an der Grenze. Sie dürfen nur zur Erhöhung der core-Größe bis zum hard-limit per ulimit -c-X.
- Kannst du die Berechtigung auf dem Ihre ausführbare Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur eine schnelle Abfrage. Funktioniert die core-Datei, die im Besitz von Benutzer
suresh
noch existieren, wenn Sie als Benutzer ausführenroot
(und welche Rechte)?Kann es sein, dass das system nicht das überschreiben der vorhandenen core-dump, wenn die Berechtigungen zu schützen (trotz
root
's eigentlich super powers").Versuchen Sie das löschen der aktuellen core-Datei vor dem ausführen als
root
(überprüfen Sie die Verzeichnis-Berechtigungen sowie zu gewährleistenroot
können Sie erstellen, die Dateien dort).Für was es Wert ist, es gibt eine lange Liste von Gründen, warum die core nicht weggeworfen werden. Einige dieser nicht auf Ihre situation zutreffen, aber man sollte Sie prüfen, Sie für Hinweise (wenn meine Hypothese oben ist falsch).
Ich glaube, ich hatte das gleiche Problem. Ich war in der Lage, richtig erzeugen von core-Dateien unter sudo durch ändern der /etc/security/limits.conf-Datei folgende Zeile hinzufügen:
Wie es scheint, ausführen sudo erstellt eine neue shell für den Benutzer root, mit dem core-limit auf 0 gesetzt. Diese änderung "behebt" das problem, obwohl ich bin sicher, das eröffnet einige pote
setuid-bit ausführbare Dateien (sudo ist ein Beispiel) unterliegen einigen Einschränkungen, versuchen:
Stellen Sie sicher, dass Sie löschen alle alten "core" - Datei vorher (eine vorhandene core-Datei wird nicht überschrieben)
Gibt es potenzielle Sicherheits-Risiken - Suche im Netz für "suid_dumpable"
Ich bin nicht sicher, ob dies der korrekte und sichere Weg, aber es funktioniert. Sudo startet eine neue shell und die neue Grenze ist gesetzt, innerhalb dieser Schale nur bevor das Programm ausgeführt wird.
Möchten Sie vielleicht, um eine schauen Sie, diese zu sehen, warum der core dump wird nicht geschrieben. Die Antwort paxdiablo ist wahrscheinlich auf die Marke. Was möchten Sie vielleicht zu tun ist, passen Sie, wie Sie core-dumps geschrieben werden, also core-{PID} anstelle von "core". Seine gute Praxis auf jeden Fall tun.
man 5 core
sollte die gleichen Informationen enthalten, in die Seite, die ich verlinkte.