Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

coredump.conf has Storage=none but files are present in /var/lib/systemd/coredump #2804

Closed
1 of 2 tasks
graysky2 opened this issue Mar 6, 2016 · 26 comments
Closed
1 of 2 tasks
Labels
bug 🐛 Programming errors, that need preferential fixing coredump
Milestone

Comments

@graysky2
Copy link

graysky2 commented Mar 6, 2016

Submission type

  • Bug report
  • Request for enhancement (RFE)

systemd version the issue has been seen with

229

Used distribution

Arch Linux x86_64

Description of bug

I have /etc/systemd/coredump.conf configured not to store coredump files (Storage=none) but I have dot files under the default external storage directory:

ls -la /var/lib/systemd/coredump
total 6380
drwxr-xr-x  2 root root    4096 Mar  4 15:45 .
drwxr-xr-x  8 root root    4096 Feb 18 14:11 ..
-rw-r-----+ 1 root root 3231744 Mar  4 15:45 .#core.xfce4-sensors-p.1000.41badd91e87e41dea3558c2922885fdd.11776.1457124302000000000000d5590a3eccd9eade
-rw-r-----+ 1 root root 3284992 Mar  4 15:27 .#core.xfce4-sensors-p.1000.5e1aec091f514a3ea72c99d0399f21d8.831.14571232490000000000000607fb7dbc780c5e
@evverx
Copy link
Member

evverx commented Mar 8, 2016

Any chance you could provide:

journalctl --boot 41badd91e87e41dea3558c2922885fdd | grep -i core
journalctl --boot 5e1aec091f514a3ea72c99d0399f21d8 | grep -i core

?

I think something killed your systemd-coredump@....service

@graysky2
Copy link
Author

graysky2 commented Mar 9, 2016

Sure:

% journalctl --boot 41badd91e87e41dea3558c2922885fdd | grep -i core
Mar 04 15:41:39 ease kernel: ACPI: Core revision 20150818
Mar 04 15:41:39 ease kernel: CPU: Processor Core ID: 0
Mar 04 15:41:39 ease kernel: smpboot: CPU0: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (family: 0x6, model: 0x3c, stepping: 0x3)
Mar 04 15:41:39 ease kernel: pinctrl core: initialized pinctrl subsystem
Mar 04 15:41:39 ease kernel: hw unit of domain pp0-core 2^-14 Joules
Mar 04 15:41:39 ease kernel: pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Mar 04 15:41:39 ease kernel: rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
Mar 04 15:41:39 ease kernel: usbcore: registered new interface driver usbfs
Mar 04 15:41:39 ease kernel: usbcore: registered new interface driver hub
Mar 04 15:41:39 ease kernel: usbcore: registered new device driver usb
Mar 04 15:41:39 ease kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Mar 04 15:41:39 ease systemd[1]: Listening on Process Core Dump Socket.
Mar 04 15:41:39 ease systemd-modules-load[231]: Inserted module 'coretemp'
Mar 04 15:41:39 ease kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
Mar 04 15:41:39 ease kernel: pps_core: LinuxPPS API ver. 1 registered
Mar 04 15:41:39 ease kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
Mar 04 15:41:39 ease kernel: intel_rapl: Found RAPL domain core
Mar 04 15:41:39 ease kernel: intel_rapl: Found RAPL domain uncore
Mar 04 15:41:39 ease kernel: usbcore: registered new interface driver usbhid
Mar 04 15:41:39 ease kernel: usbhid: USB HID core driver
Mar 04 15:45:02 ease systemd[1]: Created slice system-systemd\x2dcoredump.slice.
Mar 04 15:45:02 ease systemd[1]: Started Process Core Dump (PID 11953/UID 0).
Mar 04 15:45:02 ease systemd[1]: Stopping Process Core Dump (PID 11953/UID 0)...
Mar 04 15:45:02 ease systemd[1]: Stopped Process Core Dump (PID 11953/UID 0).
Mar 04 15:45:02 ease systemd[1]: Removed slice system-systemd\x2dcoredump.slice.

And

Mar 04 15:07:06 ease kernel: ACPI: Core revision 20150818
Mar 04 15:07:06 ease kernel: CPU: Processor Core ID: 0
Mar 04 15:07:06 ease kernel: smpboot: CPU0: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (family: 0x6, model: 0x3c, stepping: 0x3)
Mar 04 15:07:06 ease kernel: pinctrl core: initialized pinctrl subsystem
Mar 04 15:07:06 ease kernel: hw unit of domain pp0-core 2^-14 Joules
Mar 04 15:07:06 ease kernel: pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Mar 04 15:07:06 ease kernel: rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
Mar 04 15:07:06 ease kernel: usbcore: registered new interface driver usbfs
Mar 04 15:07:06 ease kernel: usbcore: registered new interface driver hub
Mar 04 15:07:06 ease kernel: usbcore: registered new device driver usb
Mar 04 15:07:06 ease kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Mar 04 15:07:06 ease systemd[1]: Listening on Process Core Dump Socket.
Mar 04 15:07:06 ease systemd-modules-load[225]: Inserted module 'coretemp'
Mar 04 15:07:06 ease kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
Mar 04 15:07:06 ease kernel: pps_core: LinuxPPS API ver. 1 registered
Mar 04 15:07:06 ease kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
Mar 04 15:07:06 ease kernel: intel_rapl: Found RAPL domain core
Mar 04 15:07:06 ease kernel: intel_rapl: Found RAPL domain uncore
Mar 04 15:07:06 ease kernel: usbcore: registered new interface driver usbhid
Mar 04 15:07:06 ease kernel: usbhid: USB HID core driver
Mar 04 15:27:29 ease systemd[1]: Created slice system-systemd\x2dcoredump.slice.
Mar 04 15:27:29 ease systemd[1]: Started Process Core Dump (PID 1174/UID 0).
Mar 04 15:27:29 ease systemd[1]: Stopping Process Core Dump (PID 1174/UID 0)...
Mar 04 15:27:29 ease systemd[1]: systemd-coredump.socket: Failed to queue service startup job (Maybe the service file is missing or not a non-template unit?): Transaction is destructive.
Mar 04 15:27:29 ease systemd[1]: systemd-coredump.socket: Unit entered failed state.
Mar 04 15:27:29 ease systemd[1]: Stopped Process Core Dump (PID 1174/UID 0).
Mar 04 15:27:29 ease systemd[1]: Removed slice system-systemd\x2dcoredump.slice.

@evverx
Copy link
Member

evverx commented Mar 9, 2016

systemd-coredump.socket: Failed to queue service startup job (Maybe the service file is missing or not a non-template unit?): Transaction is destructive.

What does systemctl cat systemd-coredump@.service print?

Could you attach the output of:

systemd-analyze set-log-level debug
bash -c 'kill -SEGV $$'
journalctl --sync
journalctl -b | grep -i core

?

@graysky2
Copy link
Author

graysky2 commented Mar 9, 2016

Sure I can... just one question about the set-log-level ... how can I tell what log level I am currently using?
echo $SYSTEMD_LOG_LEVEL returned a null. Thanks!

@evverx
Copy link
Member

evverx commented Mar 9, 2016

how can I tell what log level I am currently using?

systemctl show -p LogLevel

@graysky2
Copy link
Author

graysky2 commented Mar 9, 2016

Thanks!

% sudo systemd-analyze set-log-level debug
% bash -c 'kill -SEGV $$'
[1]    14517 segmentation fault (core dumped)  bash -c 'kill -SEGV $$'
% sudo journalctl --sync
% journalctl -b | grep -i core
Mar 09 17:36:53 ease kernel: ACPI: Core revision 20150818
Mar 09 17:36:53 ease kernel: CPU: Processor Core ID: 0
Mar 09 17:36:53 ease kernel: smpboot: CPU0: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (family: 0x6, model: 0x3c, stepping: 0x3)
Mar 09 17:36:53 ease kernel: pinctrl core: initialized pinctrl subsystem
Mar 09 17:36:53 ease kernel: hw unit of domain pp0-core 2^-14 Joules
Mar 09 17:36:53 ease kernel: pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Mar 09 17:36:53 ease kernel: rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
Mar 09 17:36:53 ease kernel: usbcore: registered new interface driver usbfs
Mar 09 17:36:53 ease kernel: usbcore: registered new interface driver hub
Mar 09 17:36:53 ease kernel: usbcore: registered new device driver usb
Mar 09 17:36:53 ease kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Mar 09 17:36:53 ease systemd[1]: Listening on Process Core Dump Socket.
Mar 09 17:36:53 ease systemd-modules-load[236]: Inserted module 'coretemp'
Mar 09 17:36:53 ease kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
Mar 09 17:36:53 ease kernel: pps_core: LinuxPPS API ver. 1 registered
Mar 09 17:36:53 ease kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
Mar 09 17:36:53 ease kernel: intel_rapl: Found RAPL domain core
Mar 09 17:36:53 ease kernel: intel_rapl: Found RAPL domain uncore
Mar 09 17:36:53 ease kernel: usbcore: registered new interface driver usbhid
Mar 09 17:36:53 ease kernel: usbhid: USB HID core driver
Mar 09 17:45:07 ease systemd[1]: systemd-coredump.socket: Incoming traffic
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Trying to enqueue job systemd-coredump@0-14518-0.service/start/replace
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Installed new job systemd-coredump@0-14518-0.service/start as 613
Mar 09 17:45:07 ease systemd[1]: system-systemd\x2dcoredump.slice: Installed new job system-systemd\x2dcoredump.slice/start as 614
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Enqueued job systemd-coredump@0-14518-0.service/start as 613
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_2esocket interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=371 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_2esocket interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=372 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_400_2d14518_2d0_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=373 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_400_2d14518_2d0_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=374 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: system-systemd\x2dcoredump.slice changed dead -> active
Mar 09 17:45:07 ease systemd[1]: system-systemd\x2dcoredump.slice: Job system-systemd\x2dcoredump.slice/start finished, result=done
Mar 09 17:45:07 ease systemd[1]: Created slice system-systemd\x2dcoredump.slice.
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: About to execute: /usr/lib/systemd/systemd-coredump
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Forked /usr/lib/systemd/systemd-coredump as 14519
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Changed dead -> running
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Job systemd-coredump@0-14518-0.service/start finished, result=done
Mar 09 17:45:07 ease systemd[1]: Started Process Core Dump (PID 14518/UID 0).
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_400_2d14518_2d0_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=379 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/systemd_2dcoredump_400_2d14518_2d0_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=380 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[1]: Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/systemd1/unit/system_2dsystemd_5cx2dcoredump_2eslice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=381 reply_cookie=0 error=n/a
Mar 09 17:45:07 ease systemd[14519]: systemd-coredump@0-14518-0.service: Executing: /usr/lib/systemd/systemd-coredump
Mar 09 17:45:07 ease systemd-coredump[14519]: Process 14517 (bash) of user 1000 dumped core.
Mar 09 17:45:07 ease systemd[1]: Received SIGCHLD from PID 14519 (systemd-coredum).
Mar 09 17:45:07 ease systemd[1]: Child 14519 (systemd-coredum) died (code=exited, status=0/SUCCESS)
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Child 14519 belongs to systemd-coredump@0-14518-0.service
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Main process exited, code=exited, status=0/SUCCESS
Mar 09 17:45:07 ease systemd[1]: systemd-coredump.socket: One connection closed, 0 left.
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Changed running -> dead
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: cgroup is empty
Mar 09 17:45:07 ease systemd[1]: systemd-coredump@0-14518-0.service: Collecting.

Looking in

@evverx
Copy link
Member

evverx commented Mar 9, 2016

Works fine.

And my last question:)
Can you attach the output of:

last -x

and

journalctl --boot 5e1aec091f514a3ea72c99d0399f21d8 | grep Shutdown

?

@graysky2
Copy link
Author

graysky2 commented Mar 9, 2016

Here are the last few lines (I have been debugging an unrelated issue so many reboots today):

% last -x
reboot   system boot  4.3.6-1-custom   Wed Mar  9 17:52   still running
facade  pts/1        10.1.10.50       Wed Mar  9 17:51 - 17:51  (00:00)
reboot   system boot  4.4.4-1-ARCH     Wed Mar  9 17:47   still running
shutdown system down  4.3.6-1-custom   Wed Mar  9 17:47 - 17:47  (00:00)
reboot   system boot  4.3.6-1-custom   Wed Mar  9 17:36 - 17:47  (00:10)
shutdown system down  4.4.4-1-ARCH     Wed Mar  9 17:36 - 17:36  (00:00)
facade  pts/1        10.1.10.50       Wed Mar  9 17:34 - 17:36  (00:01)
reboot   system boot  4.4.4-1-ARCH     Wed Mar  9 17:26 - 17:36  (00:09)
shutdown system down  4.3.6-1-custom   Wed Mar  9 17:26 - 17:26  (00:00)
reboot   system boot  4.3.6-1-custom   Wed Mar  9 17:19 - 17:26  (00:07)
shutdown system down  4.4.4-1-ARCH     Wed Mar  9 17:19 - 17:19  (00:00)
facade  pts/0        10.1.10.50       Wed Mar  9 17:11 - 17:19  (00:07)
facade  pts/0        10.1.10.50       Wed Mar  9 17:08 - 17:09  (00:01)
reboot   system boot  4.4.4-1-ARCH     Wed Mar  9 17:01 - 17:19  (00:17)
shutdown system down  4.4.4-1-ARCH     Wed Mar  9 17:01 - 17:01  (00:00)
reboot   system boot  4.4.4-1-ARCH     Wed Mar  9 16:53 - 17:01  (00:08)
shutdown system down  4.4.4-1-ARCH     Wed Mar  9 16:52 - 16:53  (00:00)
facade  pts/0        10.1.10.50       Wed Mar  9 16:50 - 16:51  (00:01)
reboot   system boot  4.4.4-1-ARCH     Wed Mar  9 16:32 - 16:52  (00:20)
shutdown system down  4.3.6-1-custom   Wed Mar  9 16:32 - 16:32  (00:00)
reboot   system boot  4.3.6-1-custom   Wed Mar  9 15:17 - 16:32  (01:15)

And

% journalctl --boot 5e1aec091f514a3ea72c99d0399f21d8 | grep Shutdown
Mar 04 15:07:08 ease systemd[1]: Starting Update UTMP about System Boot/Shutdown...
Mar 04 15:07:08 ease systemd[1]: Started Update UTMP about System Boot/Shutdown.
Mar 04 15:27:29 ease systemd[641]: Reached target Shutdown.
Mar 04 15:27:29 ease systemd[1]: Stopping Update UTMP about System Boot/Shutdown...
Mar 04 15:27:29 ease systemd[1]: Stopped Update UTMP about System Boot/Shutdown.
Mar 04 15:27:30 ease systemd[1]: Reached target Shutdown.

@evverx
Copy link
Member

evverx commented Mar 9, 2016

Bingo!:)

Mar 04 15:27:29 ease systemd[1]: Started Process Core Dump (PID 1174/UID 0).
Mar 04 15:27:29 ease systemd[1]: Stopping Process Core Dump (PID 1174/UID 0)...
Mar 04 15:27:29 ease systemd[641]: Reached target Shutdown.

So, your systemd-coredump@...service was killed by SIGTERM.
Seems like there is no SIGTERM-handler.
Also, there are no tmpfiles.d-rules.

@graysky2
Copy link
Author

Seems like there is no SIGTERM-handler.

How would one verify that?

Also, there are no tmpfiles.d-rules.

I do have:

% ls /usr/lib/tmpfiles.d | awk '{print $9}'
etc.conf
gvfsd-fuse-tmpfiles.conf
home.conf
journal-nocow.conf
lastlog.conf
legacy.conf
linux-firmware.conf
lxc.conf
man-db.conf
mkinitcpio.conf
mpd.conf
nscd.conf
samba.conf
sshd.conf
sudo.conf
svnserve.conf
systemd.conf
systemd-nologin.conf
systemd-nspawn.conf
systemd-remote.conf
tmp.conf
var.conf
x11.conf

@evverx
Copy link
Member

evverx commented Mar 10, 2016

How would one verify that?

source: https://github.com/systemd/systemd/blob/master/src/coredump/coredump.c

Also, there are no tmpfiles.d-rules.
I do have:

I mean, there is no rule in the systemd.conf

@graysky2
Copy link
Author

Can you help me to summarize these findings from a high level?

*My system has not SIGTERM handler and it should.
*SIGTERM is killing my coredump service and it should not.
*My system has no rule in systemd.conf to manage what?

Thanks!

@evverx
Copy link
Member

evverx commented Mar 10, 2016

Can you help me to summarize these findings from a high level?

Sure.
It's not your problem:)

You can run this script as a workaround:

#!/bin/bash
# Remove unused tmpdumps
# See https://github.com/systemd/systemd/issues/2804

set -e
set -o pipefail

bootid=$(cat /proc/sys/kernel/random/boot_id | tr -d '-')
find /var/lib/systemd/coredump -type f -name '.#core*' -print0 |
perl -w -0 -ne 'if (!m{/\.#core\.[^.]+\.[^.]+\.'$bootid'\.}) { unlink or die "$_: $!" }'

Low level:

  • Some process crashes on shutdown
  • Kernel runs systemd-coredump
  • systemd-coredump writes to the /run/systemd/coredump
  • systemd-coredump.socket activates systemd-coredump@.service
  • systemd-coredump@.service runs systemd-coredump
  • systemd-coredump creates /var/lib/systemd/coredump/.#core...
  • systemd-coredump@.service conflicts with shutdown.target
  • systemd stops systemd-coredump by SIGTERM
  • systemd-coredumps dies
  • /var/lib/systemd/coredump/.#core... stays on the disk
  • systemd-tmpfiles doesn't remove /var/lib/systemd/coredump/.#core... on boot

You can reproduce that crash-stop-.#core-sequence:

root# ls -al /var/lib/systemd/coredump/
total 8
drwxr-xr-x 2 root root 4096 Mar 10 23:05 .
drwxr-xr-x 6 root root 4096 Mar  8 21:03 ..

root# while :; do systemctl stop 'systemd-coredump*.service'; done 2>/dev/null &

root# for i in {1..1000}; do bash -c 'sleep 0.1 && kill -SEGV $$'; done

root# ls -al /var/lib/systemd/coredump/
total 6964
drwxr-xr-x 2 root root   4096 Mar 10 23:08 .
drwxr-xr-x 6 root root   4096 Mar  8 21:03 ..
-rw-r----- 1 root root 409600 Mar 10 23:07 .#core.bash.0.ade69f34e0d8469480dbbdb39e755aae.21902.14576512780000000000003b0adeda96106f2c
-rw-r----- 1 root root 196608 Mar 10 23:07 .#core.bash.0.ade69f34e0d8469480dbbdb39e755aae.22076.1457651279000000000000dbfc209a927ee80d
-rw-r----- 1 root root 409600 Mar 10 23:07 .#core.bash.0.ade69f34e0d8469480dbbdb39e755aae.22326.14576512790000000000005f0b25f60180d5f1
...

@graysky2
Copy link
Author

..so is my report valid against systemd? If not, what is to blame for the bug? Thanks!

@evverx
Copy link
Member

evverx commented Mar 17, 2016

Well, there are three problems:

  1. xfce4-sensors-p* crashes on shutdown

  2. systemd stops systemd-coredump@.service. so, you possibly lose a stacktrace of the crashed xfce4-sensors-p*

  3. systemd-tmpfiles doesn't cleanup /var/lib/systemd/coredump

  4. and 3) are valid against systemd.

@poettering
Copy link
Member

Yeah, these are temporary files that systemd-coredump needs while processing the coredumps. Of course, if the coredump service is aborted during the operation we better shouldn't leave those files around. This is hence a bug to fix in our coredumping code.

One option would be to use O_TMPFILE if possible (would need a fallback though I figure since older kernels don't have this on all file systems...) or to catch SIGTERM and delete the temporary files...

I much prefer the O_TMPFILE option I must say. (also, maybe kernels lacking O_TMPFILE support for the relevant file systems are already older than what we officially support)

@poettering poettering added coredump bug 🐛 Programming errors, that need preferential fixing labels Apr 15, 2016
@poettering poettering added this to the v230 milestone Apr 15, 2016
@johannbg
Copy link
Contributor

It got introduced in 3.11 if I'm not mistaken.

I think it would be wise to just document and say that the latest systemd release only "supports" the current latest mainline, stable and longterm ( which currently are 4.6.x,4.5.x,4.4.x ) kernels at that systemd version releases time.

If you are running latest systemd on other, older kernels then you are on your own ( it might work or not ) and stop worrying which kernel release downstream is using or sticking to.

@poettering
Copy link
Member

@johannbg we have such a document, it's called README. It currently requires 3.12.

Note though that when O_TMPFILE was added to the kernel it wasn't implemented in all file systems right-away, IIRC.

@johannbg
Copy link
Contributor

@poettering no shit sherlock now read again what I proposed not what the README currently says...

@fsateler
Copy link
Member

From the open(2) manpage:

          O_TMPFILE  requires support by the underlying filesystem; only a
          subset of Linux filesystems provide that support.  In  the  ini-
          tial  implementation,  support  was  provided in the ext2, ext3,
          ext4, UDF, Minix, and shmem filesystems.  XFS support was  added
          in Linux 3.15, and Btrfs support was added in Linux 3.16.

So at least fsfs and reiser do not have that support yet...

@evverx
Copy link
Member

evverx commented Apr 18, 2016

Note though that when O_TMPFILE was added to the kernel it wasn't implemented in all file systems right-away, IIRC.

I've checked reiserfs and zfs:
reiserfs:

$ modinfo reiserfs
filename:       /lib/modules/4.4.0-18-generic/kernel/fs/reiserfs/reiserfs.ko
license:        GPL
author:         Hans Reiser <reiser@namesys.com>
description:    ReiserFS journaled filesystem
alias:          fs-reiserfs
srcversion:     D190C90DFBE2A931A82620D

$ findmnt /reiserfs
TARGET    SOURCE       FSTYPE   OPTIONS
/reiserfs /dev/loop0p1 reiserfs rw,relatime

$ strace -eopen test_o_create /reiserfs/
...
open("/reiserfs/", O_RDWR|O_DIRECTORY|O_TMPFILE) = -1 EOPNOTSUPP (Operation not supported)

zfs:

$ modinfo zfs
filename:       /lib/modules/4.4.0-18-generic/kernel/zfs/zfs/zfs.ko
version:        0.6.5.6-0ubuntu3
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
srcversion:     A87B4C0C518AC85BD042501

$ findmnt /test-pool
TARGET     SOURCE    FSTYPE OPTIONS
/test-pool test-pool zfs    rw,relatime,xattr,noacl

$ strace -eopen test_o_create /test-pool/
...
open("/test-pool/", O_RDWR|O_DIRECTORY|O_TMPFILE) = -1 EOPNOTSUPP (Operation not supported)

So I vote for

catch SIGTERM and delete the temporary files

BTW:
@fsateler , what is fsfs? Do you mean f2fs?:)

@fsateler
Copy link
Member

@evverx yes, of course :)

@poettering
Copy link
Member

another option is to simply use O_TMPFILE, and when it is not available fall back to the current behaviour. After all, the files are cleaned up eventually, through normal tmpfiles aging, and the offending file systems are pretty exotic these days, or not in the upstream kernel... Hence, if we are robust on modern kernels/file systems, and still work reasonably well on everything else, then I think we are good.

evverx added a commit to evverx/systemd that referenced this issue Apr 19, 2016
Don't leave temporary files if the coredump service is aborted during
the operation

Yeah, these are temporary files that systemd-coredump needs while
processing the coredumps. Of course, if the coredump service is aborted
during the operation we better shouldn't leave those files around. This
is hence a bug to fix in our coredumping code.
See systemd#2804 (comment)

Another option is to simply use O_TMPFILE, and when it is not available
fall back to the current behaviour. After all, the files are cleaned up
eventually, through normal tmpfiles aging, and the offending file
systems are pretty exotic these days, or not in the upstream kernel.

See systemd#2804 (comment)
@evverx
Copy link
Member

evverx commented Apr 19, 2016

Makes sense. Please have a look #3065

poettering pushed a commit that referenced this issue Apr 19, 2016
Don't leave temporary files if the coredump service is aborted during
the operation

Yeah, these are temporary files that systemd-coredump needs while
processing the coredumps. Of course, if the coredump service is aborted
during the operation we better shouldn't leave those files around. This
is hence a bug to fix in our coredumping code.
See #2804 (comment)

Another option is to simply use O_TMPFILE, and when it is not available
fall back to the current behaviour. After all, the files are cleaned up
eventually, through normal tmpfiles aging, and the offending file
systems are pretty exotic these days, or not in the upstream kernel.

See #2804 (comment)
@poettering
Copy link
Member

OK, #3065 got merged now, closing this one now. This should settle things on pretty much all mainstream file systems on current kernels. If you have an exotic fs, or an older kernel, then we will still create these temporary files that might survive if the coredumping process is aborted, but given that the tmpfiles aging logic will get rid of them eventually I think we are good.

@aog2000a
Copy link

aog2000a commented Jan 9, 2019

Why is systemd-coredump writing anything at all to disk, if
coredump.conf is configured with "Storage=none" ??

(Sorry to post on an old closed bug, but it sounds very strange and a waste of resources.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐛 Programming errors, that need preferential fixing coredump
Development

No branches or pull requests

6 participants