--- Begin Message ---
Subject: |
subversion segfaul on `guix import texlive` |
Date: |
Mon, 23 May 2022 14:29:21 -0400 (EDT) |
User-agent: |
Alpine 2.21 (DEB 202 2017-01-01) |
Hi Guix,
With Guix commit 4ba4cb1d49d70a00f7236f60bd92e5eccef573dd on Linux x86-64,
I have the following problem trying to import a texlive package:
"""
$ guix import texlive qrcode
command "svn" "export" "--non-interactive" "--trust-server-cert" "-r" "59745"
"svn://www.tug.org/texlive/tags/texlive-2021.3/Master/texmf-dist/doc/latex/qrcode/" "/tmp/guix-directory.6aY7Gk/doc/latex/qrcode/" failed
with signal 11
guix import: error: failed to import package 'qrcode'
"""
It seems something is unwell with our subversion package?
Best,
Jack
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#55596: Guix/Guile segfaults on `guix import texlive` |
Date: |
Fri, 05 Aug 2022 14:22:43 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) |
Hi,
Ludovic Courtès <ludo@gnu.org> 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’.
--- End Message ---