nosh: service-dt-scanner gets repeatedly killed by SIGABRT

From: Guillermo <gdiazhartusch_at_gmail.com>
Date: Mon, 6 Jul 2015 22:01:32 -0300

Hello,

I wanted to try out nosh daemontools-style, i.e. using
service-dt-scanner and launching service-manager "by other means"
-from an interactive shell in this case, with
"local-datagram-socket-listen /run/service-manager/control
service-manager &"-. I used a scan directory with a single "service",
just for testing purposes, that does nothing for 20 seconds and then
exits; this is the run script:

#!/path-to/nosh-1.17/command/nosh
foreground sleep 20 ;
# To the logger
echo Service going down

The service has a logger that simply logs everything to its stdout
with a timestamp:

#!/path-to/nosh-1.17/command/nosh
s6-log T 1

Both service directories have start, stop, and restart scripts, the
start and stop scripts all being:

#!/path-to/nosh-1.17/command/nosh
true

And the restart scripts all being:

#!/bin/execlineb -S0
echo $1 $2 $3

However, under certain circumstances service-dt-scanner receives a
SIGABRT signal and dies:

* If the scan directory contains a symlink to the service's bundle
directory, everything works OK, except that service-dt-scanner doesn't
seem to pick up subsequent modifications to the scan directory, like
adding a symlink to the bundle directory of a new service. But that's
another story.

* If the service's bundle directory is an actual subdirectory of the
scan directory, service-dt-scanner receives a SIGABRT after being
started, every time. It does manage to start the service and its
logger, and create the pipe between them, before being killed.

* If the service's bundle directory is an actual subdirectory of the
scan directory, and has daemontools-compatible layout, i.e. service
directory = bundle directory instead of being a subdirectory named
"service", service-dt-scanner starts OK, but receives a SIGABRT as
soon as certain actions are performed on the service, just like in the
case above. Once that happens, it will die every time after being
restarted, until the "supervise" subdirectory of the service's bundle
directory is deleted. Some of the actions that make service-dt-scanner
die are using the service-{control,status,show,is-*} commands on the
service, and using ls on its bundle directory (yeah, listing its
contents). Nothing bad happens if these actions are performed on the
service's logger, though.

OS is Gentoo Linux, nosh is version 1.17, built from source code using
G++ version 4.8.3. I downloaded libkqueue's latest source code from
its git repository, which appears to be version 2.0.3 plus a couple of
bugfixes. None of these two packages were "exported" to the main
filesystem. Some minor modifications to the build/system-control.do
and build/*flags files were done to make this work.

Thanks,
G.
Received on Tue Jul 07 2015 - 01:01:32 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC