Subject: bug#54056: guix-data-service build failure, segfault probably related to [email-masked]

From: Ludovic Courtès <[email-masked]>
Date: Wed, 02 Mar 2022 17:11:51 +0100

Hi,

Christopher Baines <[email-masked]> skribis:

> Core was generated by `/gnu/store/jjl6sa1bhjpj9cssi80yr4h8ihdgk34z-guile-3.0.8/bin/guile --no-auto-com'.
> Program terminated with signal SIGSEGV, Segmentation fault.

This segfault seems to come from a bug (an out-of-range exception is
raised) while walking the VM stack to display the backtrace:

> #8  0x00007ffff7eaedd0 in error_during_backtrace (data=0x7ffff1c2b080, tag=out-of-range, throw_args=<error reading variable: ERROR: Cannot access memory at address 0x0>0x7fffe5a9bb80) at backtrace.c:252
> #9  0x00007ffff7f68821 in scm_c_with_exception_handler.constprop.0 (type=#t, handler_data=handler_data@entry=0x7fffffff98b0, thunk_data=thunk_data@entry=0x7fffffff98b0, thunk=<optimized out>, handler=<optimized out>) at exceptions.c:167
> #10 0x00007ffff7f3a88f in scm_c_catch (tag=<optimized out>, body=<optimized out>, body_data=<optimized out>, handler=<optimized out>, handler_data=<optimized out>, pre_unwind_handler=pre_unwind_handler@entry=0x0, pre_unwind_handler_data=0x0) at throw.c:168
> #11 0x00007ffff7f3a8ae in scm_internal_catch (tag=<optimized out>, body=<optimized out>, body_data=<optimized out>, handler=<optimized out>, handler_data=<optimized out>) at throw.c:177
> #12 0x00007ffff7eaf005 in scm_display_backtrace_with_highlights (stack=stack@entry="#<struct stack>" = {...}, port=port@entry=#<port #<port-type file 7ffff1bf3b40> 7ffff1c2b080>, first=first@entry=#f, depth=depth@entry=#f, highlights=highlights@entry=()) at backtrace.c:277

(Of course, both the out-of-range exception and subsequent segfault are
genuine Guile bugs.)

The real cause of the error though seems to be a ‘match-error’ in
application code:

> #17 0x00007ffff7f3bc8d in scm_throw (key=match-error, args=("match" "no matching pattern" x86_64-linux)) at throw.c:262
> #18 0x00007ffff7edb239 in throw_ (key=<optimized out>, args=<optimized out>) at intrinsics.c:396
> #19 0x00007ffff7f3f137 in vm_regular_engine (thread=0x7ffff75c8d80) at vm-engine.c:1183
> #20 0x00007ffff7f4a5e9 in scm_call_n (proc=<optimized out>, argv=<optimized out>, nargs=1) at vm.c:1608
> #21 0x00007ffff7eb2457 in scm_primitive_eval (exp=<optimized out>) at eval.c:671
> #22 0x00007ffff7eeb239 in scm_primitive_load (filename=filename@entry="/tmp/guix-build-guix-data-service-0.0.1-29.4a1088c.drv-0/source/tests/jobs-load-new-guix-revision.scm") at load.c:131

Thoughts?

Ludo’.