#1150140 ipmitool: Leftover pidfile prevents ipmievd start

Package:
ipmitool
Source:
ipmitool
Description:
utility for IPMI control with kernel driver or LAN interface (daemon)
Submitter:
Corubba
Date:
2026-10-05 21:29:05 UTC
Severity:
normal
Tags:
#1150140#5
Date:
2026-10-05 21:26:50 UTC
From:
To:
Dear Maintainer,

the ipmievd daemon included in the ipmitool package may fail to clean up its
pidfile when failing to start, causing subsequent start-attempts to fail until
the pidfile is manually removed.

```
Oct 05 12:39:46 node23 systemd[1]: Starting ipmievd.service - IPMI event daemon...
Oct 05 12:39:46 node23 ipmievd[1056]: Get Device ID command failed: 0xc0 Node busy
Oct 05 12:39:46 node23 ipmievd[1056]: Get Device ID command failed: 0xc0 Node busy
Oct 05 12:39:46 node23 ipmievd[1106]: Reading sensors...
Oct 05 12:39:46 node23 ipmievd[1106]: Get Device ID command failed: 0xc0 Node busy
Oct 05 12:39:46 node23 ipmievd[1106]: Unable to open SDR for reading
Oct 05 12:39:46 node23 ipmievd[1106]: Get BMC Global Enables command failed: Node busy
Oct 05 12:39:46 node23 ipmievd[1106]: Could not enable event message buffer
Oct 05 12:39:46 node23 ipmievd[1106]: Error setting up Event Interface open
Oct 05 12:39:46 node23 systemd[1]: Started ipmievd.service - IPMI event daemon.
Oct 05 12:39:46 node23 systemd[1]: ipmievd.service: Main process exited, code=exited, status=1/FAILURE
Oct 05 12:39:46 node23 systemd[1]: ipmievd.service: Failed with result 'exit-code'.

Oct 05 12:45:59 node23 systemd[1]: Starting ipmievd.service - IPMI event daemon...
Oct 05 12:45:59 node23 ipmievd[3563]: PID file '/run/ipmievd.pid0' already exists.
Oct 05 12:45:59 node23 ipmievd[3563]: Perhaps another instance is already running.
Oct 05 12:45:59 node23 systemd[1]: ipmievd.service: Control process exited, code=exited, status=1/FAILURE
Oct 05 12:45:59 node23 systemd[1]: ipmievd.service: Failed with result 'exit-code'.
Oct 05 12:45:59 node23 systemd[1]: Failed to start ipmievd.service - IPMI event daemon.
```

For `Type=forking` service units like these, systemd.service(5) recommends to
specify the `PIDFile` option, which systemd will use to determine the main pid
of the service, and ensure the pidfile is removed when the service stops/fails.

The daemon dynamically creates the name of the pidfile. However the static
definition of the `ExecStart` option without a `-d` or `pidfile=` argument makes
the pidfile name practically staticly `/run/ipmievd.pid0`. The SysV script uses
`/var/run/ipmievd.pid0`, although it's unclear to me why the `/var/run` symlink
is used.

The fix for SysV would be a `rm -f $PIDFILE` in the `d_stop()` function, but
unlike the systemd service unit it reads `IPMIEVD_OPTIONS` from a file and
passes them as arguments to the daemon process, potentially causing the actual
pidfile to differ from the static value defined/used in the script.

Attached is a patch to add the `PIDFile` option to the systemd service unit.