Subject: bug#55587: closed (Re: bug#55596: Guix/Guile segfaults on `guix import texlive`)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 05 Aug 2022 12:23:03 +0000

Your bug report

#55596: `guix import texlive PKG` fails with signal 11, no output

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
55596: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55596
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#55596: Guix/Guile segfaults on `guix import texlive`
From: Ludovic Courtès <[email-masked]>
To: Tobias Geerinckx-Rice <[email-masked]>
Cc: [email-masked], [email-masked], [email-masked], [email-masked]
Date: Fri, 05 Aug 2022 14:22:43 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Ludovic Courtès <[email-masked]> skribis:

> I don’t think so; the error message that was reported is:
>
>   command "svn" "export" "--non-interactive" "--trust-server-cert" "-r" "59745" "svn://www.tug.org/texlive/tags/texlive-2021.3/Master/texmf-dist/doc/latex/cite/" "/tmp/guix-directory.09UnsN/doc/latex/cite/" failed with signal 11
>
> It’s a message from ‘report-invoke-error’ in (guix build utils).  It’s
> really svn that’s segfaulting.

Maybe not!  I can trigger it reproducibly:

--8<---------------cut here---------------start------------->8---
ludo@ribbon ~/src/guix [env]$ guix describe
Generation 223  Aug 01 2022 00:30:24    (current)
  guix ab59155
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: ab59155c5a38dda7efaceb47c7528578fcf0def4
ludo@ribbon ~/src/guix [env]$ rm -f core
ludo@ribbon ~/src/guix [env]$ guix import texlive abstract
command "svn" "export" "--non-interactive" "--trust-server-cert" "-r" "59745" "svn://www.tug.org/texlive/tags/texlive-2021.3/Master/texmf-dist/doc/latex/abstract/" "/tmp/guix-directory.HYEHpM/doc/latex/abstract/" failed with signal 11
guix import: error: failed to download description for package 'abstract'
ludo@ribbon ~/src/guix [env]$ file core
core: ELF 64-bit LSB core file, x86-64, version 1 (SYSV), SVR4-style, from '/gnu/store/9z95jms1r801z1kxpiq5xw594cxaw5jx-guile-wrapper/bin/guile --no-auto-c', real uid: 1000, effective uid: 1000, real gid: 998, effective gid: 998, execfn: '/home/ludo/.config/guix/current/bin/guix', platform: 'x86_64'
--8<---------------cut here---------------end--------------->8---

Actually it happens when ‘svn’ is not in $PATH, triggering a crash in
Guile as it tries to display an error in the child process:

--8<---------------cut here---------------start------------->8---
$ gdb /gnu/store/9z95jms1r801z1kxpiq5xw594cxaw5jx-guile-wrapper/bin/guile core

[...]

Core was generated by `/gnu/store/9z95jms1r801z1kxpiq5xw594cxaw5jx-guile-wrapper/bin/guile --no-auto-c'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __vfprintf_internal (s=0x0, format=0x7f9da91744e2 "In execvp of %s: %s\n", 
    ap=ap@entry=0x7ffd286a3c78, mode_flags=mode_flags@entry=0) at vfprintf-internal.c:1359
1359    vfprintf-internal.c: No such file or directory.
(gdb) bt
#0  __vfprintf_internal (s=0x0, format=0x7f9da91744e2 "In execvp of %s: %s\n", 
    ap=ap@entry=0x7ffd286a3c78, mode_flags=mode_flags@entry=0) at vfprintf-internal.c:1359
#1  0x00007f9da8ed3589 in __fprintf (stream=<optimized out>, format=<optimized out>)
    at fprintf.c:32
#2  0x00007f9da913fd93 in ?? ()
   from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1
#3  0x00007f9da9140e01 in scm_system_star ()
   from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1

[...]
--8<---------------cut here---------------end--------------->8---

This is because the fdopen(2, "a") call in ‘start_child’ returns NULL:

--8<---------------cut here---------------start------------->8---
$ ltrace -f -e fdopen /bin/sh -c 'guix import texlive abstract'
[pid 22937] --- Called exec() ---
[pid 22945] libguile-3.0.so.1->fdopen(2, 0x7fddfd364a4a, -1, -112) = 0
[pid 22945] --- SIGSEGV (Segmentation fault) ---
--8<---------------cut here---------------end--------------->8---

It can be reproduced like this:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (parameterize ((current-output-port (current-error-port))) (system* "sdfsdf"))
$1 = 139
scheme@(guile-user)> (status:term-sig $1)
$2 = 11
scheme@(guile-user)> (version)
$3 = "3.0.8"
--8<---------------cut here---------------end--------------->8---

Fixed in Guile commit 56b1ea9002d2d3967b597aa0ee7595e815b21f23.

Back to the original issue Jack and Hugo reported: you need to add ‘svn’
to $PATH to make things work.  :-)

Thanks,
Ludo’.

Subject: `guix import texlive PKG` fails with signal 11, no output
From: Hugo Nobrega <[email-masked]>
To: [email-masked]
Date: Sun, 22 May 2022 17:26:23 -0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

The guix 'texlive' package importer is not working with any package, as
far as I can tell. It does *some* legwork, managing to figure out the
correct URI of the package, but then errors out with signal 11.

Having had a look at previous bug reports, it seems this "signal 11"
thing is not new (e.g., bug#28303), but in any case I am not seeing any
output after the error (unlike what seemed to be happening in bug#28303)

Example:

hugo@hp-guix ~$ guix import texlive cite
command "svn" "export" "--non-interactive" "--trust-server-cert" "-r"
"59745"
"svn://www.tug.org/texlive/tags/texlive-2021.3/Master/texmf-dist/doc/latex/cite/"
"/tmp/guix-directory.09UnsN/doc/latex/cite/" failed with signal 11 guix
import: error: failed to import package 'cite'

Best regards,
Hugo