Subject: Re: bug#77283: Shepherd can't parse logs.

From: Ludovic Courtès <[email-masked]>
Date: Sun, 30 Mar 2025 23:02:06 +0200

Hi MSavoritias,

MSavoritias <[email-masked]> skribis:

> Shepherd has been crashing our system with the message:
>
> https://upload.magicbroccoli.de/fb6e7843fef693538a5c7c156c0a98fc0aeb6bac/KmA7ovtC2Fcw0Nm0PSCtphwSyDLI1VUF3QrT9PtD/Kuvakaappaus_-_2025-03-26_13-27-11.png
>
>
> This ends up with prosody and openssh crashing, nginx still
> working. the picture shows shepherd system-log crashing with:
>
> uncaught exception, value out of range in fibers. It references an
> "unknown file" and a string with prosody.

The code that throws that out-of-range exception on ‘substring’ is
(match:substring m 3) in ‘parse-system-log-message’.

Normally, ‘regexp-exec’ returns match structures with correct
boundaries, but in this case it didn’t.  I reported it here:

  https://issues.guix.gnu.org/77392

Several options come to mind:

  1. Run shepherd in a UTF-8 locale; a quick workaround is to run:

       sudo herd eval root '(setlocale LC_ALL "C.UTF-8")'

     but we could also do that in Guix System.

  2. Avoid (ice-9 regex) altogether in ‘system-log.scm’ and use a pure
     Scheme implementation, SRFI-115-style.

Thanks for your bug report!

Ludo’.