Subject: [Cuirass] Continuation barrier while serving HTTP requests
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Sat, 24 Jun 2023 22:59:00 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

I noticed this backtrace:

--8<---------------cut here---------------start------------->8---
2023-06-21 18:28:27 GET /eval/6436191
2023-06-21 18:28:27 In cuirass/http.scm:
2023-06-21 18:28:27    978:25 11 (url-handler _ _)
2023-06-21 18:28:27    202:16 10 (evaluation-html-page ((#:id . 6436191) (# . 0) (. #) ?) ?)
2023-06-21 18:28:27 In cuirass/logging.scm:
2023-06-21 18:28:27    110:18  9 (call-with-time-logging "builds request" #<procedure 7f?>)
2023-06-21 18:28:27 In ice-9/boot-9.scm:
2023-06-21 18:28:27   1752:10  8 (with-exception-handler _ _ #:unwind? _ # _)
2023-06-21 18:28:27 In cuirass/utils.scm:
2023-06-21 18:28:27    124:24  7 (_)
2023-06-21 18:28:27 In cuirass/database.scm:
2023-06-21 18:28:27    1305:2  6 (_ _)
2023-06-21 18:28:27   1245:28  5 (proc _)
2023-06-21 18:28:27 In ice-9/boot-9.scm:
2023-06-21 18:28:27   1685:16  4 (raise-exception _ #:continuable? _)
2023-06-21 18:28:27 In cuirass/utils.scm:
2023-06-21 18:28:27    121:12  3 (_ #<&compound-exception components: (#<&error> #<&orig?>)
2023-06-21 18:28:27 In fibers/operations.scm:
2023-06-21 18:28:27    155:10  2 (perform-operation _)
2023-06-21 18:28:27 In fibers/scheduler.scm:
2023-06-21 18:28:27     386:6  1 (suspend-current-task _)
2023-06-21 18:28:27 In ice-9/boot-9.scm:
2023-06-21 18:28:27   1685:16  0 (raise-exception _ #:continuable? _)
2023-06-21 18:28:27 Attempt to suspend fiber within continuation barrier
--8<---------------cut here---------------end--------------->8---

Apparently the starting point is ‘db-get-builds’ throwing an exception,
and later on ‘call-with-resource-from-pool’ being unable to suspend as
it calls ‘put-message’ to return the resource to the pool.

This is with Cuirass commit c74d60d194b4036f5f649ce8b6481b51d8061d89
(the resource pool was introduced earlier, in commit
425ede115e05c5b9864e1c443ade8019fa659c67).

Ludo’.