#2 rasdaemon runs out of fds
Opened by teknoraver. Modified

rasdaemon constantly fails

# journalctl -b -e -u rasdaemon
feb 29 21:12:16 turbo rasdaemon[863]:            <...>-16    [000]     0.000637: block_rq_complete:    2020-02-29 21:12:13 +0100
feb 29 21:12:16 turbo rasdaemon[863]: cpu 01:rasdaemon: diskerror_eventstore: 0x5613536031d8
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed to do diskerror_event step on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed reset diskerror_event on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: register inserted at db
feb 29 21:12:16 turbo rasdaemon[863]:            <...>-16    [198]     0.000637: block_rq_complete:    2020-02-29 21:12:15 +0100
feb 29 21:12:16 turbo rasdaemon[863]: cpu 01:rasdaemon: diskerror_eventstore: 0x5613536031d8
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed to do diskerror_event step on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed reset diskerror_event on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: register inserted at db
feb 29 21:12:16 turbo rasdaemon[863]:            <...>-16    [000]     0.000637: block_rq_complete:    2020-02-29 21:12:15 +0100
feb 29 21:12:16 turbo rasdaemon[863]: cpu 01:rasdaemon: diskerror_eventstore: 0x5613536031d8
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed to do diskerror_event step on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed reset diskerror_event on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: register inserted at db
feb 29 21:12:16 turbo rasdaemon[863]:            <...>-16    [000]     0.000637: block_rq_complete:    2020-02-29 21:12:15 +0100
feb 29 21:12:16 turbo rasdaemon[863]: cpu 03:rasdaemon: diskerror_eventstore: 0x5613536031d8
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed to do diskerror_event step on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed reset diskerror_event on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: register inserted at db
feb 29 21:12:16 turbo rasdaemon[863]:            <...>-26    [212]     0.000637: block_rq_complete:    2020-02-29 21:12:15 +0100
feb 29 21:12:16 turbo rasdaemon[863]: cpu 06:rasdaemon: diskerror_eventstore: 0x5613536031d8
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed to do diskerror_event step on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: Failed reset diskerror_event on sqlite: error = 14
feb 29 21:12:16 turbo rasdaemon[863]: rasdaemon: register inserted at db

The problem seems to be the fd number:

# strace -p $(pidof rasdaemon)
strace: Process 863 attached
socket(AF_UNIX, SOCK_STREAM, 0)         = -1 EMFILE (Too many open files)
openat(AT_FDCWD, "/var/lib/rasdaemon/ras-mc_event.db-journal", O_RDWR|O_CREAT|O_CLOEXEC, 0644) = -1 EMFILE (Too many open files)
openat(AT_FDCWD, "/var/lib/rasdaemon/ras-mc_event.db-journal", O_RDONLY|O_CLOEXEC) = -1 EMFILE (Too many open files)
stat("/var/lib/rasdaemon/ras-mc_event.db-wal", 0x7ffc7f11ea20) = -1 ENOENT (No such file or directory)

Indeed rasdaemon reached the fd limit:

# ls /proc/$(pidof rasdaemon)/fd/ |wc -l
1024

My system:

# rasdaemon -V
rasdaemon 0.6.3
# cat /etc/fedora-release 
Fedora release 31 (Thirty One)
# uname -a
Linux turbo 5.5.6-201.fc31.x86_64 #1 SMP Mon Feb 24 20:24:13 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Metadata