Nessun core-dump dopo recenti aggiornamenti a systemd?


12

Quando eseguo un programma su cui lavoro, non riesce con il seguente messaggio:

...
Aborted (core dumped)

Tuttavia, non viene creato alcun dump principale. I core dump sono stati scritti in precedenza e non ricordo di aver cambiato nulla ad esso correlato.

Quando corro ulimit -atorno,

$ ulimit -a
core file size          (blocks, -c) unlimited
...

Altri punti,

  • Ho verificato che il mio utente può creare file nella directory corrente.
  • Ho letto di /proc/sys/fs/suid_dumpable. Attualmente, è impostato su 0 sulla mia macchina. Ho provato a cambiarlo in 1 o 2 ma nessuna differenza.
  • Ho anche provato a eseguire il programma come root, ma neanche quello ha fatto la differenza.

Sfortunatamente, non ricordo quando ho potuto produrre l'ultimo core-dump di successo.

Risposte:


8

Dai documenti in poi coredump.conf,

Per disabilitare un file di configurazione fornito dal fornitore, il modo consigliato è inserire un collegamento simbolico /dev/nullnella directory di configurazione in /etc/, con lo stesso nome del file di configurazione del fornitore.

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

Da systemd, le cose sono gestite diversamente.


Wow, hai ragione! Non molto tempo fa sono passato a systemd. sudo systemd-coredumpctlmostra tutti i dump core mancanti. La soluzione ha funzionato, ma solo dopo il riavvio del sistema.
Philipp Claßen,

1
systemd's systemd-sysctl.servicesolo corse sysctlal corretto punto di avvio, e maniglie rieseguire a mano sui cambiamenti. E non andare a creare / sovrascrivere i file di configurazione senza indagare a cosa servono e il loro contenuto.
vonbrand,

1
Sembra che il file sia stato rinominato 50-coredump.conf, per applicare le impostazioni nell'avvio corrente, ho dovuto eseguire manualmente la modifica dell'impostazione sysctl, vedi stackoverflow.com/q/2065912/427545 .
Lekensteyn,

2
Per ripristinare il valore predefinito, non impostare una stringa vuota, utilizzare invece questa:sysctl -w kernel.core_pattern="core"
Lekensteyn

2

Potresti voler usare il coredumpctlcomando per recuperare il tuo core dump o eseguire gdb su di esso. Questo è il metodo "approvato dal sistema" per gestirli. : - /

In un certo senso, è un po 'bello che systemd stia acquisendo tutte queste cose perché le cancellerà automaticamente dopo un po' e inoltre semplifica il caricamento di dump di crash per le segnalazioni di bug.

Ma è stato un cambiamento sconcertante con poco in termini di notifica o suggerimenti per le persone che sapevano come funzionavano i cadaveri prima che il sistema venisse coinvolto. Anche eliminare un file chiamato 'core.pid.txt' con le istruzioni per usare coredumpctl per ottenere il tuo coredump e come disattivare la creazione dei .txtfile sarebbe stato di grande aiuto, anche se quelli avrebbero anche disseminato il filesystem per un po '.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.