[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#699208: some more



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@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@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@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


Reply to: