Hello! A bug we noticed with the Shepherd 0.10.0 on berlin: after reconfiguring, which registers a “replacement” for services currently running, restarting said services (with ‘herd restart’ or similar, which is supposed to instate the replacement) happens to leave the old service behind.
Example: ‘ssh-daemon’ is marked as stopped because it cannot bind to port 22; indeed, there’s still a service listening on port 22, the one service that should have been replaced. Likewise for ‘cuirass-web’ for instance: it’s marked as failing to start, but in fact it’s running; if you try to kill the ‘cuirass web’ process, you can see it’s respawned and /var/log/messages shows that very clearly. What seems to happen is that, in both cases, the registry points to the new service; ‘herd status’ & co. look up the service by name in the registry, find the new service, and rightfully show that it’s stopped. But the old service still exists: it’s no longer in the registry, but it handles SIGCHLD, incoming connections on port 22, etc. Ludo’.