[gdb/guile] Don't allow libguile to change libgmp mem fns
authorTom de Vries <tdevries@suse.de>
Tue, 4 May 2021 08:26:16 +0000 (10:26 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 4 May 2021 08:26:16 +0000 (10:26 +0200)
commit225bda24db9671e2087fda892f94141625836a40
treee260ed095456050e49153baf5aac58ef6c79111e
parentae0373ce077724b52ceab6e095cc6509a7eea48f
[gdb/guile] Don't allow libguile to change libgmp mem fns

Since gdb commit 880ae75a2b7 "gdb delay guile initialization until
gdbscm_finish_initialization" I'm running into:
...
(gdb) print My_Var > 10.0^M
free(): invalid pointer^M
ERROR: GDB process no longer exists
GDB process exited with wait status 5995 exp9 0 0 CHILDKILLED SIGABRT SIGABRT
UNRESOLVED: gdb.ada/fixed_cmp.exp: gnat_encodings=all: print My_Var > 10.0
...

The problem is that both gdb and libguile try to set the libgmp memory functions,
and since the gdb commit the ones from libguile are effective, which results
in gdb freeing some memory in a way that is not compatible with the way that
memory was actually allocated.

The fact that libguile tries to set the libgmp memory functions is a bug which
should be fixed starting version v3.0.6.

Meanwhile, work around this in gdb by not allowing libguile to set the libgomp
memory functions.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-05-04  Tom de Vries  <tdevries@suse.de>

PR guile/27806
* guile/guile.c (gdbscm_initialize): Don't let guile change libgmp
memory functions.
gdb/ChangeLog
gdb/guile/guile.c