Subject: Re: bug#69064: python-mysqlclient: MySQLdb.string_literal SIGSEGV

From: Marco Rimoldi <[email-masked]>
Date: Mon, 12 Feb 2024 15:19:18 +0100

I've set up to test this bug with a more recent version of mariadb, but I must be missing something important about the Guix workflow here. Maybe that could explain the bug as an error on my part, as well. I'd really appreciate your help, because I'm at a loss here.

The steps I've taken so far:

I populated a manifest.scm file along these lines:

(define-public mariadb-test
  (package
    (name "mariadb-test")
    (version "10.11.7")
    [...]
    (build-system cmake-build-system)
    (outputs '("out" "lib" "dev"))
    (arguments
     `(#:tests? #f   ;; tests disabled but passing for the most part
    [...]

(define-public python-mysqlclient-test
  (package
    (name "python-mysqlclient")
    (version "2.2.4")
    [...]
    (build-system pyproject-build-system)
    (arguments '(#:tests? #f))          ;XXX: requires a live database
    (inputs (list pkg-config 
                  `(,mariadb-test "dev")
		  `(,mariadb-test "lib")
                  zlib))
    (propagated-inputs (list `(,mariadb-test "lib")))
    [...]

(define transform
  (options->transformation
   '((with-debug-info . "mariadb-test"))))

(packages->manifest (list gdb
			  python-pdbpp
			  python-3
			  (transform python-mysqlclient-test)
			  (transform mariadb-test)))

I then launched a guix shell and ran the debugger:

guix shell --manifest=manifest.scm
gdb --args "python3 test.py"
(gdb) run
Starting program: /gnu/store/hm1kl7zi0r2nbg1zgh8ywwm0h35h6zfx-profile/bin/python3 test.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/ln6hxqjvz6m9gdd9s97pivlqck7hzs99-glibc-2.35/lib/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff75b5f23 in ?? () from /gnu/store/z0c58i28g97z85w986i841l4crbpf8zk-mariadb-10.10.2-lib/lib/libmariadb.so.3

The part that I cannot understand is why the segfault always happens in mariadb-10.10.2-lib, ie. a different package compared to what I declared in the manifest file. This happens after running "guix gc", as well.

Marco