[Pkg-mpd-maintainers] Bug#699208: some more
Guillem Jover
guillem at debian.org
Tue May 21 23:47:43 UTC 2013
Hi!
On Tue, 2013-05-21 at 23:28:10 +0200, Christoph Egger wrote:
> Just noticed: stopping mpd works fine *unless* it's during the
> upgrade. I'll look into it.
>
> Christoph
>
> Some more information:
> --
> christoph at mitoraj {1} ~
> 23:25 0 % sudo start-stop-daemon --stop --oknodo --retry 5 --pidfile /run/mpd/pid --exec /usr/bin/mpd
> No /usr/bin/mpd found running; none killed.
> christoph at mitoraj {1} ~
> 23:25 0 % ps auxf | grep mpd
> 1000 5772 0.0 0.0 9108 1548 ? S+ 23:25 0:00 \_ grep mpd
> mpd 4657 0.0 0.1 365148 15628 ? Ss 23:24 0:00 /usr/bin/mpd /etc/mpd.conf
> christoph at mitoraj {1} ~
> 23:25 0 % cat /run/mpd/pid
> 4657
> --
>
> Wild guess:
>
> start-stop-daemon on bsd acting weird iff the actual binary on
> /usr/bin/mpd (--exec) is not the same (inode-wise) as the running
> one.
Yeah the problem here is on s-s-d.
> Open question:
>
> Why does it work on linux just fine / is only mpd breaking on *kbsd
The /proc/<PID>/exe and other native equivalent implementations on
BSDs do not give anything meaningful when the inode has been removed,
and as it stands s-s-d uses the Linux method on kFreeBSD. We noticed
this last year (see #652575, CCed to debian-bsd), and I played with
different methods, but there's currently no way to retrieve the exec
path from a process whose executable has been removed (not even with
sysctl KERN_PROC_PATHNAME, only Linux and HPUX seem to have sane
interfaces for this). I'll recheck my notes to make sure though.
Handling this was on my TODO for dpkg 1.17.x, and I guess I'll have
to switch the --exec option on kFreeBSD to use the KVM method, which
is unfortunately based on the process argv...
If someone has some other idea, I'm happy to evaluate it and implement
it for s-s-d.
Thanks,
Guillem
More information about the Pkg-mpd-maintainers
mailing list