https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119607
Bug ID: 119607
Summary: [15 regression] glib miscompiled since
r15-7895-gb191e8bdecf881
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: needs-source, wrong-code
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
Created attachment 60970
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60970&action=edit
meson.i686-pc-linux-gnu.x86.ini
All the failing tests involve threads which is a pain. It also only fails with
-m32 so can't use Valgrind, and sanitizers make things work.
I'm going to do the basic bits (comparing objects, getting dumps) but likely
need some help to finish it then, not comfortable debugging threaded
applications yet when the threads are relevant to the problem. I'll say when
I'm at that point.
--
```
$ mkdir ~/bugs/glib && cd ~/bugs/glib
$ wget https://download.gnome.org/sources/glib/2.84/glib-2.84.0.tar.xz
$ tar xvf glib-2.84.0.tar.xz
$ mkdir build && cd build
$ meson setup --native-file ~/scripts/meson/meson.i686-pc-linux-gnu.x86.ini
~/bugs/glib/glib-2.84.0
$ ninja test
[...]
Summary of Failures:
165/384 glib:gobject / signals-refcount4
ERROR 1.22s killed by signal 6 SIGABRT
194/384 glib:gobject / properties-refcount1
ERROR 1.63s killed by signal 11 SIGSEGV
175/384 glib:gobject / signals-refcount2
ERROR 1.67s killed by signal 5 SIGTRAP
210/384 glib:gobject+slow / closure-refcount
ERROR 3.78s killed by signal 6 SIGABRT
321/384 glib:gio / gsettings
ERROR 0.56s killed by signal 5 SIGTRAP
300/384 glib:gio+slow / actions
ERROR 3.59s killed by signal 5 SIGTRAP
Ok: 372
Fail: 6
Skipped: 6
```
An example failure:
```
$ MESON_TEST_ITERATION=1 MALLOC_PERTURB_=117
G_TEST_BUILDDIR=/home/sam/bugs/glib/build/gobject/tests MALLOC_CHECK_=2
LD_LIBRARY_PATH=/home/sam/bugs/glib/build/gobject:/home/sam/bugs/glib/build/glib
G_DEBUG=gc-friendly G_TEST_SRCDIR=/home/sam/bugs/glib/glib-2.84.0/gobject/tests
G_ENABLE_DIAGNOSTIC=1
/home/sam/bugs/glib/build/gobject/tests/properties-refcount1
TAP version 14
# random seed: R02S95fc5335f798bde46c993a52cc355a49
1..1
# Start of gobject tests
# Start of refcount tests
# .b
# .e
# .c
not ok /gobject/refcount/properties-1 - GLib-GObject-FATAL-CRITICAL:
g_closure_ref: assertion 'closure->ref_count > 0' failed
Bail out!
Segmentation fault (core dumped) MESON_TEST_ITERATION=1
MALLOC_PERTURB_=117 G_TEST_BUILDDIR=/home/sam/bugs/glib/build/gobject/tests
MALLOC_CHECK_=2
LD_LIBRARY_PATH=/home/sam/bugs/glib/build/gobject:/home/sam/bugs/glib/build/glib
G_DEBUG=gc-friendly G_TEST_SRCDIR=/home/sam/bugs/glib/glib-2.84.0/gobject/tests
G_ENABLE_DIAGNOSTIC=1
/home/sam/bugs/glib/build/gobject/tests/properties-refcount1
```
The failures aren't stable (sometimes segfault, sometimes trap, rarely passes
too). The reliance on threading means it can't be reproduced under rr record
either.