python-mysqlclient: MySQLdb.string_literal SIGSEGV

  • Open
  • quality assurance status badge
Details
One participant
  • Marco Rimoldi
Owner
unassigned
Submitted by
Marco Rimoldi
Severity
normal
M
M
Marco Rimoldi wrote on 12 Feb 01:08 +0100
(address . bug-guix@gnu.org)
20240212010816.6e4b4711@libero.it
Hello,

I think I found a bug in python-mysqlclient@2.0.1 compiled with mariadb:dev@10.10.2.

To reproduce: run a Python 3.10.7 terminal, import the MySQLdb module, call the string_literal function with any argument. Interpreter crashes due to segmentation fault. Arch is x86_64.

Same with version 2.2.4, tested tweaking the package definition.

I tried installing mariadb with debug symbols, but I was not able to make mysqlclient link against that variant (either using transformations in a manifest file or --with-debug-info=mariadb). Suggestions are welcome.

The bug affects the openmolar package.

Marco
M
M
Marco Rimoldi wrote on 12 Feb 15:19 +0100
(address . 69064@debbugs.gnu.org)
20240212151918.42a38476@libero.it
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
M
M
Marco Rimoldi wrote on 21 Mar 16:32 +0100
control message for bug #69122
(address . control@debbugs.gnu.org)
20240321163234.35a8595e@libero.it
block 69122 by 69064
quit
?