GIMP crash at closure on systems with GLib 2.80.0 (and 2.79.x)
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
The Gimp |
Fix Released
|
Unknown
|
||||
gimp (Ubuntu) | Status tracked in Oracular | |||||
Noble |
Fix Released
|
High
|
Aaron Rainbolt | |||
Oracular |
Fix Released
|
High
|
Aaron Rainbolt |
Bug Description
[ Impact ]
GIMP is crashing when closed on Ubuntu 24.04 only. This seems to happen if an unsaved image is present, popping up the dialog asking if you want to save your changes. If you click "Discard", GIMP crashes. This isn't too critical for data safety, but it is a serious papercut and can result in data loss in certain edge cases according to the upstream bug report in GIMP.
There is already a one-line patch available that solves the problem: https:/
[ Test Plan ]
1. Install GIMP on Ubuntu 24.04.
2. Create a blank image and draw a black squiggly line in it.
3. Export it as a PNG.
4. Close GIMP, and click "Discard" when prompted if you want to save your changes.
5. Observe crash.
6. Install a patched GIMP that has the previously linked patch applied.
7. Repeat steps 1-4 and ensure that GIMP does not crash and that the image is saved properly.
[ Where problems could occur ]
The patch changes the behavior of signal handlers, meaning that a difference between upstream GIMP and Ubuntu's GIMP could potentially result in the patch being incompatible and causing similar or worse crashing issues. The above test plan will likely catch such issues.
----------
Original bug report:
Hello.
I report a bug or supposed to be a bug concerning GIMP. I had worked with GIMP without pb.
When closing the GIMP session, I got a crash (Refer to reported info below).
My configuration is Kubuntu 24.04 (Dev) Noble updated daily.
I remain available to provide further information.
Thanks to you for your support. Regards. Xavier
<!-- Copy-paste this whole debug data to report to developers -->
```
GNU Image Manipulation Program version 2.10.36
git-describe: GIMP_2_10_36
Build: unknown rev 0 for linux
# C compiler #
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_
OFFLOAD_
OFFLOAD_
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.0 (Ubuntu 13.2.0-7ubuntu1)
# Libraries #
using babl version 0.1.108 (compiled against version 0.1.106)
using GEGL version 0.4.48 (compiled against version 0.4.44)
using GLib version 2.79.1 (compiled against version 2.78.1)
using GdkPixbuf version 2.42.10 (compiled against version 2.42.10)
using GTK+ version 2.24.33 (compiled against version 2.24.33)
using Pango version 1.51.0 (compiled against version 1.51.0)
using Fontconfig version 2.14.2 (compiled against version 2.14.2)
using Cairo version 1.18.0 (compiled against version 1.18.0)
```
> fatal error: Erreur de segmentation
Stack trace:
```
# Stack traces obtained from PID 23798 - Thread 23798 #
This GDB supports auto-downloading debuginfo from the following URLs:
<https:/
Enable debuginfod for this session? (y or [n]) [answered N; input not from terminal]
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[New LWP 24048]
[New LWP 23812]
[New LWP 23807]
[New LWP 23806]
[New LWP 23805]
[New LWP 23801]
[New LWP 23800]
[New LWP 23799]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_
0x00007f43ec8a9c53 in malloc_consolidate (av=av@
Id Target Id Frame
* 1 Thread 0x7f43ebef83c0 (LWP 23798) "gimp-2.10" 0x00007f43ec8a9c53 in malloc_consolidate (av=av@
2 Thread 0x7f43a59fc6c0 (LWP 24048) "swap writer" syscall () at ../sysdeps/
3 Thread 0x7f43ad41e6c0 (LWP 23812) "async" syscall () at ../sysdeps/
4 Thread 0x7f43e885b6c0 (LWP 23807) "gdbus" 0x00007f43ec91b4bd in __GI___poll (fds=0x7f439000
5 Thread 0x7f43e141f6c0 (LWP 23806) "gmain" 0x00007f43ec91b4bd in __GI___poll (fds=0x55b137b3
6 Thread 0x7f43e0c1e6c0 (LWP 23805) "pool-spawner" syscall () at ../sysdeps/
7 Thread 0x7f43e3fff6c0 (LWP 23801) "worker" syscall () at ../sysdeps/
8 Thread 0x7f43ea86a6c0 (LWP 23800) "worker" syscall () at ../sysdeps/
9 Thread 0x7f43eb06b6c0 (LWP 23799) "worker" syscall () at ../sysdeps/
Thread 9 (Thread 0x7f43eb06b6c0 (LWP 23799) "worker"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x00007f43ed154083 in ?? () from /lib/x86_
No symbol table info available.
#3 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929682622144, -72656450940445
#5 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 8 (Thread 0x7f43ea86a6c0 (LWP 23800) "worker"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x00007f43ed154083 in ?? () from /lib/x86_
No symbol table info available.
#3 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929674229440, -72656461930193
#5 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 7 (Thread 0x7f43e3fff6c0 (LWP 23801) "worker"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x00007f43ed154083 in ?? () from /lib/x86_
No symbol table info available.
#3 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929564739264, -72656610949452
#5 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 6 (Thread 0x7f43e0c1e6c0 (LWP 23805) "pool-spawner"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x00007f43ecb8f4cb in ?? () from /lib/x86_
No symbol table info available.
#3 0x00007f43ecbf6c13 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#5 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929510340288, -72656676399385
#6 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 5 (Thread 0x7f43e141f6c0 (LWP 23806) "gmain"):
#0 0x00007f43ec91b4bd in __GI___poll (fds=0x55b137b3
sc_ret = -516
sc_ret = <optimized out>
#1 0x00007f43ecc2419e in ?? () from /lib/x86_
No symbol table info available.
#2 0x00007f43ecbc4663 in g_main_
No symbol table info available.
#3 0x00007f43ecbc46b9 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#5 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929518732992, -72656665409637
#6 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 4 (Thread 0x7f43e885b6c0 (LWP 23807) "gdbus"):
#0 0x00007f43ec91b4bd in __GI___poll (fds=0x7f439000
sc_ret = -516
sc_ret = <optimized out>
#1 0x00007f43ecc2419e in ?? () from /lib/x86_
No symbol table info available.
#2 0x00007f43ecbc5b87 in g_main_loop_run () from /lib/x86_
No symbol table info available.
#3 0x00007f43ece684b2 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#5 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139929640613568, -72656505658329
#6 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 3 (Thread 0x7f43ad41e6c0 (LWP 23812) "async"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x000055b136b44706 in ?? ()
No symbol table info available.
#3 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139928646313664, -72655170068455
#5 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 2 (Thread 0x7f43a59fc6c0 (LWP 24048) "swap writer"):
#0 syscall () at ../sysdeps/
No locals.
#1 0x00007f43ecc1ddcd in g_cond_wait () from /lib/x86_
No symbol table info available.
#2 0x00007f43ed195a25 in ?? () from /lib/x86_
No symbol table info available.
#3 0x00007f43ecbf3852 in ?? () from /lib/x86_
No symbol table info available.
#4 0x00007f43ec89ca94 in start_thread (arg=<optimized out>) at ./nptl/
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139928518248128, -72655338291586
#5 0x00007f43ec929c2c in clone3 () at ../sysdeps/
No locals.
Thread 1 (Thread 0x7f43ebef83c0 (LWP 23798) "gimp-2.10"):
#0 0x00007f43ec8a9c53 in malloc_consolidate (av=av@
idx = 0
fb = 0x7f43eca03ad0 <main_arena+16>
maxfb = 0x7f43eca03b18 <main_arena+88>
p = 0x55b13c152410
nextp = <optimized out>
nextchunk = <optimized out>
size = <optimized out>
nextsize = <optimized out>
prevsize = <optimized out>
nextinuse = <optimized out>
#1 0x00007f43ec8aba80 in _int_malloc (av=av@
nb = <optimized out>
idx = 99
bin = <optimized out>
victim = <optimized out>
size = <optimized out>
remainder = <optimized out>
block = <optimized out>
bit = <optimized out>
map = <optimized out>
fwd = <optimized out>
bck = <optimized out>
tcache_nb = <optimized out>
tc_idx = <optimized out>
#2 0x00007f43ec8ad6e4 in __GI___libc_malloc (bytes=
ar_ptr = 0x7f43eca03ac0 <main_arena>
victim = <optimized out>
tbytes = <optimized out>
tc_idx = <optimized out>
#3 0x00007f43ec8851a5 in __GI__IO_
size = 4096
p = <optimized out>
st = {st_dev = 2052, st_ino = 1838266, st_nlink = 1, st_mode = 33204, st_uid = 1000, st_gid = 1000, __pad0 = 0, st_rdev = 0, st_size = 0, st_blksize = 4096, st_blocks = 0, st_atim = {tv_sec = 1708946534, tv_nsec = 471388647}, st_mtim = {tv_sec = 1708946534, tv_nsec = 471388647}, st_ctim = {tv_sec = 1708946534, tv_nsec = 471388647}, __glibc_reserved = {0, 0, 0}}
#4 0x00007f43ec895514 in __GI__IO_doallocbuf (fp=fp@
No locals.
#5 0x00007f43ec892f80 in _IO_new_
No locals.
#6 0x00007f43ec893a9f in _IO_new_file_xsputn (n=58, data=<optimized out>, f=<optimized out>) at ./libio/
block_size = <optimized out>
do_write = <optimized out>
s = <optimized out>
to_do = <optimized out>
must_flush = <optimized out>
count = <optimized out>
s = <optimized out>
to_do = <optimized out>
must_flush = <optimized out>
count = <optimized out>
p = <optimized out>
block_size = <optimized out>
do_write = <optimized out>
#7 _IO_new_file_xsputn (f=0x55b13973a170, data=<optimized out>, n=58) at ./libio/
s = <optimized out>
to_do = 58
must_flush = 0
count = 0
p = <optimized out>
block_size = <optimized out>
do_write = <optimized out>
#8 0x00007f43ec860cb9 in __printf_
count = 58
count = <optimized out>
#9 __printf_
No locals.
#10 0x00007f43ec86b59a in __vfprintf_internal (s=0x55b13973a170, format=
_buffer = {__routine = 0x7f43ec85f720 <__funlockfile>, __arg = 0x55b13973a170, __canceltype = 0, __prev = 0x0}
wrap = {base = {write_base = 0x7ffd0151a050 "\n# Stack traces obtained from PID 23798 - Thread 23798 #\n\n", write_ptr = 0x7ffd0151a08a "", write_end = 0x7ffd0151a0d0 "\210\373\
done = <optimized out>
__result = <optimized out>
#11 0x00007f43ecc1831a in g_fprintf () from /lib/x86_
No symbol table info available.
#12 0x00007f43edaf9c50 in gimp_stack_
No symbol table info available.
#13 0x000055b136885aeb in ?? ()
No symbol table info available.
#14 0x000055b136885e8e in gimp_fatal_error ()
No symbol table info available.
#15 0x000055b136885eed in ?? ()
No symbol table info available.
#16 <signal handler called>
No locals.
#17 0x00007f43eccec678 in g_type_
No symbol table info available.
#18 0x000055b136a1e034 in gimp_message_
No symbol table info available.
#19 0x000055b1368d64e4 in ?? ()
No symbol table info available.
#20 0x00007f43eccc51fa in g_closure_invoke () from /lib/x86_
No symbol table info available.
#21 0x00007f43eccf41fc in ?? () from /lib/x86_
No symbol table info available.
#22 0x00007f43ecce4f31 in ?? () from /lib/x86_
No symbol table info available.
#23 0x00007f43ecce5161 in g_signal_
No symbol table info available.
#24 0x00007f43ecce5223 in g_signal_emit () from /lib/x86_
No symbol table info available.
#25 0x000055b136b68f94 in gimp_container_
No symbol table info available.
#26 0x000055b136be5aa4 in ?? ()
No symbol table info available.
#27 0x000055b136b68b04 in gimp_container_
No symbol table info available.
#28 0x000055b136b69d3d in ?? ()
No symbol table info available.
#29 0x00007f43eccd3e4f in g_object_unref () from /lib/x86_
No symbol table info available.
#30 0x000055b1368d45b6 in ?? ()
No symbol table info available.
#31 0x00007f43ecccef77 in ?? () from /lib/x86_
No symbol table info available.
#32 0x00007f43ecba3c42 in ?? () from /lib/x86_
No symbol table info available.
#33 0x00007f43eccd0adb in ?? () from /lib/x86_
No symbol table info available.
#34 0x00007f43eccd40a6 in g_object_
No symbol table info available.
#35 0x000055b1368d5f96 in ?? ()
No symbol table info available.
#36 0x00007f43eccc51fa in g_closure_invoke () from /lib/x86_
No symbol table info available.
#37 0x00007f43eccf41fc in ?? () from /lib/x86_
No symbol table info available.
#38 0x00007f43ecce4f31 in ?? () from /lib/x86_
No symbol table info available.
#39 0x00007f43ecce5161 in g_signal_
No symbol table info available.
#40 0x00007f43ecce5223 in g_signal_emit () from /lib/x86_
No symbol table info available.
#41 0x00007f43eccc51fa in g_closure_invoke () from /lib/x86_
No symbol table info available.
#42 0x00007f43eccf41fc in ?? () from /lib/x86_
No symbol table info available.
#43 0x00007f43ecce4f31 in ?? () from /lib/x86_
No symbol table info available.
#44 0x00007f43ecce5161 in g_signal_
No symbol table info available.
#45 0x00007f43ecce5223 in g_signal_emit () from /lib/x86_
No symbol table info available.
#46 0x00007f43ed6989c6 in ?? () from /lib/x86_
No symbol table info available.
#47 0x00007f43eccc51fa in g_closure_invoke () from /lib/x86_
No symbol table info available.
#48 0x00007f43eccf4340 in ?? () from /lib/x86_
No symbol table info available.
#49 0x00007f43ecce4f31 in ?? () from /lib/x86_
No symbol table info available.
#50 0x00007f43ecce5161 in g_signal_
No symbol table info available.
#51 0x00007f43ecce5223 in g_signal_emit () from /lib/x86_
No symbol table info available.
#52 0x00007f43ed6991d9 in ?? () from /lib/x86_
No symbol table info available.
#53 0x00007f43ed7434d7 in ?? () from /lib/x86_
No symbol table info available.
#54 0x00007f43eccc51fa in g_closure_invoke () from /lib/x86_
No symbol table info available.
#55 0x00007f43eccf4888 in ?? () from /lib/x86_
No symbol table info available.
#56 0x00007f43ecce4892 in ?? () from /lib/x86_
No symbol table info available.
#57 0x00007f43ecce5161 in g_signal_
No symbol table info available.
#58 0x00007f43ecce5223 in g_signal_emit () from /lib/x86_
No symbol table info available.
#59 0x00007f43ed86f024 in ?? () from /lib/x86_
No symbol table info available.
#60 0x00007f43ed741094 in gtk_propagate_event () from /lib/x86_
No symbol table info available.
#61 0x00007f43ed7426db in gtk_main_do_event () from /lib/x86_
No symbol table info available.
#62 0x00007f43edbcb16b in ?? () from /lib/x86_
No symbol table info available.
#63 0x00007f43ecbc51c5 in ?? () from /lib/x86_
No symbol table info available.
#64 0x00007f43ecc24247 in ?? () from /lib/x86_
No symbol table info available.
#65 0x00007f43ecbc5b87 in g_main_loop_run () from /lib/x86_
No symbol table info available.
#66 0x000055b13688a515 in app_run ()
No symbol table info available.
#67 0x000055b13688041f in main ()
No symbol table info available.
[Inferior 1 (process 23798) detached]
```
Changed in gimp: | |
status: | Unknown → Fix Released |
tags: | added: noble |
tags: | added: fixed-in-gimp-2.10.38 fixed-upstream |
summary: |
- GIMP crash at closure + GIMP crash at closure on systems with GLib 2.80.0 (and 2.79.x) |
description: | updated |
Changed in gimp (Ubuntu): | |
status: | Confirmed → Triaged |
importance: | Undecided → High |
assignee: | nobody → Aaron Rainbolt (arraybolt3) |
Changed in gimp (Ubuntu Noble): | |
status: | New → Confirmed |
status: | Confirmed → Triaged |
Changed in gimp (Ubuntu Oracular): | |
status: | Triaged → New |
Changed in gimp (Ubuntu Noble): | |
importance: | Undecided → High |
assignee: | nobody → Aaron Rainbolt (arraybolt3) |
Changed in gimp (Ubuntu Noble): | |
status: | Triaged → In Progress |
Changed in gimp (Ubuntu Oracular): | |
status: | Fix Committed → Fix Released |
Status changed to 'Confirmed' because the bug affects multiple users.