Subject: Re: bug#69730: Segfault in (spawn) when passed wrong port

From: Ludovic Courtès <[email-masked]>
Date: Mon, 06 May 2024 11:27:36 +0200

Hi,

Tomas Volf <[email-masked]> skribis:

> When I pass #f to spawn as a port, it just segfaults:
>
>     $ guile -c '(spawn "true" (list "") #:error #f)'
>     Segmentation fault

This was fixed a while back in the ‘main’ branch:

--8<---------------cut here---------------start------------->8---
$ guile -c '(spawn "true" (list "") #:error #f)'
Backtrace:
In ice-9/boot-9.scm:
  1755:12  6 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           5 (apply-smob/0 #<thunk 7f6a52ad4300>)
In ice-9/boot-9.scm:
    724:2  4 (call-with-prompt ("prompt") #<procedure 7f6a52ae10c0 …> …)
In ice-9/eval.scm:
    619:8  3 (_ #(#(#<directory (guile-user) 7f6a52ad7c80>)))
In ice-9/command-line.scm:
   185:19  2 (_ #<input: custom-port 7f6a52ad1850>)
In unknown file:
           1 (eval (spawn "true" (list "") #:error #f) #<directory (…>)
           0 (spawn "true" ("") #:error #f)

ERROR: In procedure spawn:
In procedure spawn: Wrong type argument in position 5 (expecting open file port): #f
$ guix describe
Generation 301  May 05 2024 23:32:10    (current)
  shepherd 08dfcde
    repository URL: https://git.savannah.gnu.org/git/shepherd.git
    branch: devel
    commit: 08dfcde725e3b26f1e542a520c97a16aa9482802
  guile 3b76a30
    repository URL: https://git.savannah.gnu.org/git/guile.git
    branch: main
    commit: 3b76a30e3ca1f0b7ee7944836c2fc5660596b3bd
  guix d6c95d4
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: d6c95d4208a0cbc3ab742732865f9481c637660f
--8<---------------cut here---------------end--------------->8---

We ought to cut a release!

See <https://bugs.gnu.org/61073> and
5b42f8c154906584455a4989038406c88b723cb0.

Thanks,
Ludo’.