Subject: Exception within (guix store) process-stderr when using suspendable ports

From: Christopher Baines <[email-masked]>
Date: Fri, 17 Mar 2023 11:04:24 +0000

I'm seeing this in the build coordinator agent, but it can be reproduced
by tweaking the guix build script as below. The build coordinator uses
suspendable ports as this is required to set timeouts for some I/O
operations.

I'm guessing this is maybe a bug within Guile, but I thought I'd start
reporting it here anyway.

→ git diff
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 72a24f91ac..874108e482 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -64,6 +64,9 @@ (define-module (guix scripts build)
             register-root
             register-root*))
 
+(use-modules (ice-9 suspendable-ports))
+(install-suspendable-ports!)
+
 (define %default-log-urls
   ;; Default base URLs for build logs.
   '("http://ci.guix.gnu.org/log"))

→ ./pre-inst-env guix build --check /gnu/store/jz8nxdv8hx7d80vban2qq1a08pf1ilws-anthy-9100h.drv
The following derivation will be built:
  /gnu/store/jz8nxdv8hx7d80vban2qq1a08pf1ilws-anthy-9100h.drv
building /gnu/store/jz8nxdv8hx7d80vban2qq1a08pf1ilws-anthy-9100h.drv...

...

starting phase `check'
./test_anthy --help to print usage.
ANTHY_ENABLE_DEBUG_PRINT=()
ANTHY_SPLITTER_PRINT=()
SRCDIR=(.)
anthy-9100h Fri Mar 17 10:59:29 2023
1:(���Τˤ蘆����)
|����|�ˤ蘆����
����(�Ǥ�:(,1000,Nk,72089)223,026 ,����:(1N,1000,Nk,72089)222,744 ,�Ĥ�:(,1000,Nk,71001)210,785 ,����:(g,1000,Nk,71001)197,472 ,��:(1,1000,N,64031)196,095 ,�¤�:(,1000,Nk,71001)190,816 ,�Ƥ�:(,1000,Nk,71001)190,538 ,��:(1,1000,N,64031)177,837 ,�Ť�:(,1000,Nk,71001)166,409 ,¶��:(1,1000,TM,72089)112,640 ,¶��:(1,1000,TM,72089)112,358 ,��:(1,1000,N,72089)58,573 ,��:(1,1000,N,72089)51,814 ,��:(1,1000,N,7208)8,335 ,����:(1,1000,N,7208)8,307 ,����:(N,0,-)1 ,):
�ˤ蘆����(�����:(,1000,Nk,72089)205,004 ,�ˤ蘆����:(N,0,-)2 ,�˥掠����:(g,0,-)2 ,�˥掠����:(N,0,-)1 ,):

2:(�����󤴤Τ��������򤢤�ޤäƤ���Ȥ�����ޤ�)
|������|����|����������|����ޤäƤ����|������ޤ�
������(����:(1,1000,Nk,6553)2500,001 ,����:(1,1000,N,66951)131,810 ,������:(N,0,-)2 ,������:(N,0,-)1 ,):
����(���:(,1000,Nk,6553)2500,001 ,���:(,1000,Nk,72089)218,520 ,���:(,1000,Nk,72089)216,268 ,����:(N,1000,Nk,72089)193,740 ,���:(,1000,Nk,72089)193,176 ,�ޤ�:(,1000,Nk,72089)191,487 ,���:(,1000,Nk,72089)166,706 ,���:(,1000,Nk,6553)15,154 ,5��:(,1000,Nk,6553)7,168 ,����:(,1000,Nk,6553)7,142 ,���:(,1000,Nk,6553)7,117 ,����:(g,0,-)2 ,����:(N,0,-)1 ,):
����������(�б���:(,1000,Nk,48773)149,368 ,�粦��:(,1000,Nk,70474)138,746 ,�ڲ���:(,1000,Nk,48773)96,022 ,����������:(N,0,-)2 ,����������:(g,0,-)2 ,����������:(N,0,-)1 ,):
����ޤäƤ����(��äƤ����:(,1000,Vy,72089)225,279 ,�դäƤ����:(,1000,Vy,72089)216,268 ,����ޤäƤ����:(N,1000,Vy,72089)195,992 ,��äƤ����:(,1000,Vy,6553)19,455 ,����ޥåƥ����:(g,0,-)2 ,����ޥåƥ����:(N,0,-)1 ,):
������ޤ�(�פ��ޤ�:(,1000,Ve,6553)20,479 ,�ۤ��ޤ�:(,1000,Ve,6553)20,274 ,������ޤ�:(N,1000,Ve,6553)19,660 ,������ޥ�:(N,0,-)1 ,):

3:(����Ƥ󤻤�����)
|����Ƥ�|��������
����Ƥ�(��ž:(1,1000,N,72089)218,520 ,��ŷ:(1,1000,N,7208)11,038 ,����Ƥ�:(N,0,-)2 ,����ƥ�:(N,0,-)1 ,):
��������(����:(1,1000,N,7208)13,290 ,��������:(N,0,-)2 ,��������:(N,0,-)1 ,):

4:(�����Τ��ä�����ˤ���Ǥ���)
|������|���ä���|��ˤ���Ǥ���
������(�ؤ�:(,1000,Nk,68423)213,822 ,�դ�:(,1000,Nk,68423)211,684 ,�פ�:(,1000,Nk,68423)211,417 ,������:(N,1000,Nk,68423)186,026 ,�פ�:(,1000,Nk,68423)185,758 ,���:(,1000,Nk,68423)181,749 ,�֤�:(,1000,Nk,68423)153,952 ,������:(g,0,-)2 ,������:(N,0,-)1 ,):
���ä���(���ä���:(N,1000,Nk,62560)191,591 ,������:(,1000,Nk,62560)142,716 ,���å���:(g,0,-)2 ,���å���:(N,0,-)1 ,):
��ˤ���Ǥ���(�ؤˤ���Ǥ���:(,1000,Ne,6553)20,479 ,�¤ˤ���Ǥ���:(,1000,Ne,6553)20,274 ,��ˤ���Ǥ���:(N,1000,Ne,6553)20,069 ,�Ĥˤ���Ǥ���:(,1000,Ne,6553)18,636 ,��ˤ���Ǥ���:(,1000,Ne,655)1,986 ,��˥���Ǥ���:(,1000,Ne,655)1,638 ,�̤���Ǥ���:(,1000,Ne,655)1,618 ,�����Ǥ���:(,1000,Ne,655)1,065 ,���Τ���Ǥ���:(,1000,Ne,655)799 ,��˥���ǥ���:(N,0,-)1 ,):

5:(���󤿤��ȤȤä���Ǥ���)
|���󤿤����|�Ȥä���Ǥ���
���󤿤���(���󥿥���:(1N,1000,N,57866)177,215 ,���󤿤���:(N,0,-)2 ,���󥿥���:(g,0,-)2 ,):
�Ȥä���Ǥ���(�Ȥä���Ǥ���:(N,1000,Ne,72089)225,279 ,��ä���Ǥ���:(,1000,Ne,72089)223,026 ,���ä���Ǥ���:(,1000,Ne,72089)222,744 ,�Τä���Ǥ���:(,1000,Ne,72089)222,463 ,å�ä���Ǥ���:(,1000,Ne,72089)222,181 ,�ͤä���Ǥ���:(,1000,Ne,72089)218,520 ,Ͽ�ä���Ǥ���:(,1000,Ne,72089)216,268 ,��ä���Ǥ���:(,1000,Ne,72089)214,015 ,��ä���Ǥ���:(,1000,Ne,72089)213,733 ,���ä���Ǥ���:(,1000,Ne,72089)202,751 ,�ݤä���Ǥ���:(,1000,Ne,72089)202,469 ,��ü�Ǥ���:(,1000,Ne,7208)17,345 ,�ȥå���ǥ���:(N,0,-)1 ,):

6:(���ä����ˤ�������������)
|���ä�����|��������������
���ä�����(�ع���:(,1000,Nk,70285)215,248 ,���ä�����:(N,0,-)2 ,���å�����:(g,0,-)2 ,���å�����:(N,0,-)1 ,):
Backtrace:
In ice-9/boot-9.scm:
  1752:10 18 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
          17 (apply-smob/0 #<thunk 7f7723f4d2e0>)
In ice-9/boot-9.scm:
    724:2 16 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
    619:8 15 (_ #(#(#<directory (guile-user) 7f7723f52c80>)))
In guix/ui.scm:
   2300:7 14 (run-guix . _)
  2263:10 13 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1752:10 12 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In guix/status.scm:
    830:4 11 (call-with-status-report _ _)
In ice-9/boot-9.scm:
  1752:10 10 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In guix/store.scm:
   659:37  9 (thunk)
   1298:8  8 (call-with-build-handler _ _)
   1298:8  7 (call-with-build-handler #<procedure 7f77219ebde0 at guix/ui.scm:1196:2 (continue store things mode)> _)
In guix/scripts/build.scm:
   805:27  6 (_)
In guix/store.scm:
  1417:15  5 (_ #<store-connection 256.99 7f7723ee8780> _ _)
   736:20  4 (process-stderr _ _)
In ice-9/rdelim.scm:
   160:18  3 (read-string _)
In ice-9/suspendable-ports.scm:
    604:9  2 (read-char _)
In ice-9/boot-9.scm:
  1685:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure integer->char: Argument 1 out of range: 1199972