Subject: Re: bug#53296: Intermittent segfaults when parsing (?) custom package from repo.

From: [email-masked]
Date: Tue, 18 Jan 2022 15:23:40 +0900

Good day. Thanks for looking into this.

Ludovic Courtès <[email-masked]> wrote:
> Here’s how I tried (and failed) to reproduce the segfault:
> 
> --8<---------------cut here---------------start------------->8---
> $ find /tmp/test
> /tmp/test
> /tmp/test/gnu
> /tmp/test/gnu/packages
> /tmp/test/gnu/packages/jsoftware.scm
> 
> $ guix build -L /tmp/test jsoftware
> /tmp/test/gnu/packages/jsoftware.scm:76:0: warning: source expression failed to match any pattern
> guix build: error: jsoftware: nekonata pako

Is that an Esperanto locale?!

> $ guix build -f /tmp/test/gnu/packages/jsoftware.scm 
> /tmp/test/gnu/packages/jsoftware.scm:76:0: error: (define ijconsole "G-exp script that detects AVX/AVX2 support at runtime and executes jconsole\n  with the appropriate libj.so and profile.ijs." (with-imported-modules (quote ((guix cpu) (guix memoization) (guix profiling) (guix sets) (srfi srfi-26))) (program-file "ijconsole" (gexp (begin (use-modules ((guix cpu) #:select (cpu-flags current-cpu)) ((guix sets) #:select (set-contains?)) ((srfi srfi-26) #:select (cute))) (define %basedir (dirname (dirname (current-filename)))) (let* ((jconsole (string-append %basedir "/libexec/j/jconsole")) (cpu-has-flag? (cute set-contains? (cpu-flags (current-cpu)) <>)) (libj (format #f "~a/lib/j/libj~a.so" %basedir (cond ((cpu-has-flag? "avx2") "-avx2") ((cpu-has-flag? "avx") "-avx") (else "")))) (jprofile (string-append %basedir "/etc/j/profile.ijs"))) (apply execl jconsole "ijconsole" "-lib" libj "-jprofile" jprofile (cdr (command-line))))))))): source expression failed to match any pattern
>
> $ guix describe
> Generacio 201   Jan 12 2022 23:15:13    (nuna)
>   guix 0052c3b
>     repository URL: https://git.savannah.gnu.org/git/guix.git
>     branch: master
>     commit: 0052c3b0458fba32920a1cfb48b8311429f0d6b5
> --8<---------------cut here---------------end--------------->8---
> 
> Is there another way to reproduce it?

The segfault is pretty inconsistent on my end. Unfortunately, the only
"reliable" way to produce I know at the moment is to badger the build command
repeatedly and get (un)lucky.

> Is the ‘LD_LIBRARY_PATH’ variable set on your system?

Good thought. But no; I am seeing the segfaults in a --pure shell.