Subject: packages.guix.gnu.org occasionally wrecks havoc

From: Ludovic Courtès <[email-masked]>
Date: Fri, 28 Apr 2023 23:22:56 +0200

Hello!

Minutes ago, packages.guix.gnu.org was not responding; ‘sudo herd
restart guix-packages-website’ “fixed” it.

According to /var/log/guix-packages-website.log, it stopped processing
requests at 9:35 this morning (the process was still running though):

--8<---------------cut here---------------start------------->8---
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 55>
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 54>
2023-04-28 09:35:03 [Client] HEAD /packages/perl-critic/1.140/ #<input-output: socket 53>
2023-04-28 09:35:03 In ice-9/boot-9.scm:
2023-04-28 09:35:03   1747:15  4 (with-exception-handler #<procedure 7f0dac3bd210 at ic…> …)
2023-04-28 09:35:03 In artanis/page.scm:
2023-04-28 09:35:03    147:18  3 (return-response _ #:pre-headers _ #:status _ #:mtime _ …)
2023-04-28 09:35:03 In artanis/utils.scm:
2023-04-28 09:35:03   1334:41  2 (artanis-log _ 200 text/html #:port _ #:request _)
2023-04-28 09:35:03 In unknown file:
2023-04-28 09:35:03            1 (getpeername #<input-output: socket 53>)
2023-04-28 09:35:03 In ice-9/boot-9.scm:
2023-04-28 09:35:03   1685:16  0 (raise-exception _ #:continuable? _)
2023-04-28 09:35:03 Error: (%exception #<&assertion-failure>)
2023-04-28 09:35:03 Ingore it to avoid Ragnarok crash.
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 52>
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 51>
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 50>
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 49>
2023-04-28 09:35:03 [Client] GET / #<input-output: socket 48>
2023-04-28 09:35:03 [Client] GET /favicon.ico #<input-output: socket 47>
--8<---------------cut here---------------end--------------->8---

Earlier we see this:

--8<---------------cut here---------------start------------->8---
2023-04-28 09:00:39 [Client] GET / #<input-output: socket 49>
2023-04-28 09:00:39 [Client] GET / #<input-output: socket 48>
2023-04-28 09:00:39 In ice-9/boot-9.scm:
2023-04-28 09:00:39   1747:15  4 (with-exception-handler #<procedure 7f0dada26660 at ic…> …)
2023-04-28 09:00:39 In artanis/page.scm:
2023-04-28 09:00:39    147:18  3 (return-response _ #:pre-headers _ #:status _ #:mtime _ …)
2023-04-28 09:00:39 In artanis/utils.scm:
2023-04-28 09:00:39   1334:41  2 (artanis-log _ 200 text/html #:port _ #:request _)
2023-04-28 09:00:39 In unknown file:
2023-04-28 09:00:39            1 (getpeername #<input-output: socket 48>)
2023-04-28 09:00:39 In ice-9/boot-9.scm:
2023-04-28 09:00:39   1685:16  0 (raise-exception _ #:continuable? _)
2023-04-28 09:00:39 Error: (%exception #<&assertion-failure>)
2023-04-28 09:00:39 Ingore it to avoid Ragnarok crash.
2023-04-28 09:00:39 [Client] GET / #<input-output: socket 47>
2023-04-28 09:05:44 [Client] HEAD HTTP ESC[37m500ESC[0m
2023-04-28 09:05:44 Captured in <ESC[33m/tmp/guix-build-artanis-0.5.1.drv-0/artanis-0.5.1/artanis/server/ragnarok.scm
ESC[0m>
2023-04-28 09:05:44 Threw in procedure ESC[33mhandle-requestESC[0m :
2023-04-28 09:05:44 ESC[36m[REASON] Internal ERROR system-error (getpeername ~A (Transport endpoint is not connected) (107))!ESC[0m
2023-04-28 09:05:44 [SERVER ERROR] Internal error from server-side, rendering a 500 page for client ...
--8<---------------cut here---------------end--------------->8---

and:

--8<---------------cut here---------------start------------->8---
2023-04-28 08:30:08 [Remote] 127.0.0.1 @ 2023-04-28 08:30:07
2023-04-28 08:30:08 [Request] method: GET, path: /, query: #f
2023-04-28 08:30:08 [Response] status: 200, MIME: text/html
2023-04-28 08:30:08 
2023-04-28 08:30:08 In procedure getpeername: Transport endpoint is not connected
2023-04-28 08:33:13 HTTP ESC[37m500ESC[0m
2023-04-28 08:33:13 Captured in <ESC[33m/tmp/guix-build-artanis-0.5.1.drv-0/artanis-0.5.1/artanis/server/ragnarok.scm
ESC[0m>
2023-04-28 08:33:13 Threw in procedure ESC[33mhandle-requestESC[0m :
2023-04-28 08:33:13 ESC[36m[REASON] Internal ERROR system-error (getpeername ~A (Transport endpoint is not connected) (
107))!ESC[0m
2023-04-28 08:33:13 [SERVER ERROR] Internal error from server-side, rendering a 500 page for client ...
--8<---------------cut here---------------end--------------->8---

It would seems that in some cases Artanis/Ragnarok is failing to handle
‘getpeername’ exceptions.  It would be worth checking with upstream
whether that could explain the crash.

WDYT?

Ludo’.