On Thu, Jun 09, 2022 at 02:26:59PM +0200, Hanna Reitz wrote: > After writing the PID file, we register an atexit() handler to unlink it > when the process terminates. However, if the process has changed its > working directory in the meantime (e.g. in os_setup_post() when > daemonizing), this will not work when the PID file path was relative. > Therefore, pass the absolute path (created with realpath()) to the > unlink() call in the atexit() handler. > > (realpath() needs a path pointing to an existing file, so we cannot use > it before qemu_write_pidfile().) > > Reproducer: > $ cd /tmp > $ qemu-storage-daemon --daemonize --pidfile qsd.pid > $ file qsd.pid > qsd.pid: ASCII text > $ kill $(cat qsd.pid) > $ file qsd.pid > qsd.pid: ASCII text > > (qsd.pid should be gone after the process has terminated.) > > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2092322 > Signed-off-by: Hanna Reitz <hre...@redhat.com> > --- > storage-daemon/qemu-storage-daemon.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-)
Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|