:: [devuan-dev] bug#499: marked as don…
Top Page
Delete this message
Reply to this message
Author: Devuan bug Tracking System
Date:  
To: Mark Hindley
Subject: [devuan-dev] bug#499: marked as done (Smokeping service unable to stop/restart)
Your message dated Wed, 11 Jan 2023 12:14:13 +0000
with message-id <Y76oFfCIEnQ5z+IQ@???>
and subject line Fixed in Debian #989354
has caused the Devuan bug report #499,
regarding Smokeping service unable to stop/restart
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@???
immediately.)


--
499: https://bugs.devuan.org/cgi/bugreport.cgi?bug=499
Devuan Bug Tracking System
Contact owner@??? with problems
Package: smokeping
Version: 2.7.3-2

First-time submitter, so please excuse and correct me on any procedural
errors on my part.

Basically, the current version of smokeping's init service quietly fails
to stop smokeping, and then subsequently fails to restart it because the
process is still running.

My understanding is that between ASCII and Beowulf the service was
altered in an attempt to improve security. In ASCII, it checked only
that a process with a saved PID existed; in Beowulf it also tries to
compare the invocation string to the program string in the process list.

While this seems a reasonable idea for most daemons, smokeping seems to
be a bit of an exception -- it runs under an interpreter (perl), and as
such the stored PID refers to the perl process launching it; naturally,
the process string differs from the invocation, being e.g.
"/usr/bin/perl /usr/sbin/smokeping --config=/etc/smokeping/config" while
being launched as "/usr/sbin/smokeping --config=/etc/smokeping/config".

Given this complication, my current personal setup, and my suggestion,
is to instead check the owner of the process against the $DAEMON_USER
when stopping, as this is configured to be a package-specific user
called "smokeping":

< start-stop-daemon --oknodo --stop --retry 3 --quiet --pidfile $PIDFILE --exec $DAEMON --signal 15
> start-stop-daemon --oknodo --stop --retry 3 --quiet --pidfile $PIDFILE --user $DAEMON_USER --signal 15


This seems to work well for me, though I would certainly not be opposed
to any other working method if this is less than ideal for some reason.
Version: 2.7.3-4