Segfault on opening old XCF files
Environment/Versions
- GIMP version: current HEAD (e59231d6)
- Package: own build
- Operating System: Gentoo Linux
Description of the bug
I'm trying to open old XCF files (by old I mean 2004...). I have a bunch of them and Gimp crashes immediately while trying to open them. I'm attaching the debug log, but some things are optimized out. I can of course rebuild GIMP and retry if some important detail was skipped. I can also upload the XCF file.
Reproduction
Is the bug reproducible? Always
Reproduction steps:
- open old XCF file
Expected result: file opens
Actual result: GIMP crashes
Additional information
GNU Image Manipulation Program version 2.99.19
git-describe: GIMP_2_99_18-638-ge59231d659
Build: unknown rev 0 for linux
# C compiler #
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/13/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-13.2.1_p20240210/work/gcc-13-20240210/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/13 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/13/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/13/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13 --disable-silent-rules --disable-dependency-tracking --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/13/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 13.2.1_p20240210 p14' --with-gcc-major-version-only --enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --enable-cet --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --with-zstd --without-isl --enable-default-pie --enable-default-ssp --disable-fixincludes --with-build-config=bootstrap-cet
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20240210 (Gentoo 13.2.1_p20240210 p14)
# Libraries #
using babl version 0.1.109 (compiled against version 0.1.109)
using GEGL version 0.4.49 (compiled against version 0.4.49)
using GLib version 2.78.6 (compiled against version 2.78.6)
using GdkPixbuf version 2.42.10 (compiled against version 2.42.10)
using GTK+ version 3.24.41 (compiled against version 3.24.41)
using Pango version 1.52.1 (compiled against version 1.52.1)
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: Segmentation fault
Stack trace:
# Stack traces obtained from PID 30673 - Thread 30673 #
[New LWP 30674]
[New LWP 30676]
[New LWP 30677]
[New LWP 30678]
[New LWP 30679]
[New LWP 30680]
[New LWP 30681]
[New LWP 30682]
[New LWP 30683]
[New LWP 30684]
[New LWP 30685]
[New LWP 30686]
[New LWP 30687]
[New LWP 30688]
[New LWP 30690]
[New LWP 30691]
[New LWP 30692]
[New LWP 30695]
[New LWP 31285]
[New LWP 31288]
[New LWP 31290]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
0x00007f41d9d4b87d in read () from /usr/lib64/libc.so.6
Id Target Id Frame
* 1 Thread 0x7f41d8561280 (LWP 30673) "gimp-2.99" 0x00007f41d9d4b87d in read () from /usr/lib64/libc.so.6
2 Thread 0x7f41d58006c0 (LWP 30674) "pool-spawner" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
3 Thread 0x7f41d4e006c0 (LWP 30676) "gmain" 0x00007f41d9d4b23f in poll () from /usr/lib64/libc.so.6
4 Thread 0x7f41cfe006c0 (LWP 30677) "gdbus" 0x00007f41d9d4b23f in poll () from /usr/lib64/libc.so.6
5 Thread 0x7f41cf4006c0 (LWP 30678) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
6 Thread 0x7f41cea006c0 (LWP 30679) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
7 Thread 0x7f41ce0006c0 (LWP 30680) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
8 Thread 0x7f41cd6006c0 (LWP 30681) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
9 Thread 0x7f41ccc006c0 (LWP 30682) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
10 Thread 0x7f41c7e006c0 (LWP 30683) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
11 Thread 0x7f41c74006c0 (LWP 30684) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
12 Thread 0x7f41c6a006c0 (LWP 30685) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
13 Thread 0x7f41c60006c0 (LWP 30686) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
14 Thread 0x7f41c56006c0 (LWP 30687) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
15 Thread 0x7f41c4c006c0 (LWP 30688) "worker" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
16 Thread 0x7f41bb4006c0 (LWP 30690) "dconf worker" 0x00007f41d9d4b23f in poll () from /usr/lib64/libc.so.6
17 Thread 0x7f41b16006c0 (LWP 30691) "async" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
18 Thread 0x7f41b0c006c0 (LWP 30692) "gimp-2.99" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
19 Thread 0x7f41a74006c0 (LWP 30695) "gimp-2.99" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
20 Thread 0x7f419be006c0 (LWP 31285) "pool-gimp-2.99" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
21 Thread 0x7f41994006c0 (LWP 31288) "dashboard" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
22 Thread 0x7f41a6a006c0 (LWP 31290) "swap writer" 0x00007f41d9d5613d in syscall () from /usr/lib64/libc.so.6
#0 0x00007f41d9d4b87d in read () at /usr/lib64/libc.so.6
#1 0x00007f41db781e24 in read (__nbytes=255, __buf=0x7fffdd9f55b0, __fd=<optimized out>) at /usr/include/bits/unistd.h:28
#2 gimp_stack_trace_print (prog_name=<optimized out>, stream=stream@entry=0x564b338a0630, trace=trace@entry=0x0) at ../libgimpbase/gimputils.c:1394
status = 0
stack_printed = 0
gtrace = 0x0
gimp_pid = "30673\000\000\000x\373\377\377\377\377\377\377"
buffer = "\001\000\000\000\000\000\000\000=\257\324\331A\177\000\000؇*\333A\177\000\000P\230\3266\031\000\000\000\020\000\000\000\000\000\000\000@V\237\335\377\177\000\000\360U\237\335\377\177\000\000\000s\233\004!\257\345\276@$\3326KV\000\000@$\3326KV\000\000\266\001\000\000\000\000\000\000\000s\233\004!\257\345\276\300W\237\335\377\177\000\000\000s\233\004!\257\345\2760\006\2123KV\000\0000\006\2123KV\000\000\003nM2KV\000\000\003nM2KV\000\000\001\000\000\000\000\000\000\000P\230\3266KV\000\0000\006\2123KV\000\000\342\231\315\331A\177\000\000u\000\000\000\000\000\000\000ʻ\315\331A\177\000\000е\315\331A\177", '\000' <repeats 14 times>...
read_n = <optimized out>
sync_fd = {26, 27}
out_fd = {28, 29}
fork_pid = 31291
pid = 30673
eintr_count = 0
tid = 30673
#3 0x0000564b322576fd in gimp_eek (reason=reason@entry=0x564b324ddcfa "fatal error", message=<optimized out>, use_handler=use_handler@entry=1) at ../app/errors.c:355
fd = 0x564b338a0630
has_backtrace = 1
pid = "30673\000\000\000i\034\2556KV\000"
gimpdebug = 0x564b32559b60 "/usr/local/stow/gimp/libexec/gimp-debug-tool-2.99"
args = {0x564b32559b60 "/usr/local/stow/gimp/libexec/gimp-debug-tool-2.99", 0x564b33a34980 "gimp-2.99", 0x7fffdd9f57b0 "30673", 0x564b324ddcfa "fatal error", 0x564b36ad1c69 "Segmentation fault", 0x564b33a32d00 "/home/tomaszg/.config/GIMP/2.99/CrashLog/gimp-crash-1715794962.txt", 0x0, 0x7fffdd9f57c0 "0", 0x0}
timestamp = "0\000\3326KV\000\000؇*\333A\177\000"
config = <optimized out>
eek_handled = 0
debug_policy = GIMP_DEBUG_POLICY_WARNING
iter = <optimized out>
num_idx = <optimized out>
i = 0
#4 0x0000564b32257d4e in gimp_fatal_error (message=<optimized out>) at ../app/errors.c:206
#5 0x0000564b3225a94d in gimp_sigfatal_handler (sig_num=11) at ../app/signals.c:196
#6 0x00007f41d9c93930 in <signal handler called> () at /usr/lib64/libc.so.6
#7 0x00007f41db2752c5 in ??? () at /usr/lib64/libgobject-2.0.so.0
#8 0x00007f41db278c1b in g_object_set_valist () at /usr/lib64/libgobject-2.0.so.0
#9 0x00007f41db27991f in g_object_set () at /usr/lib64/libgobject-2.0.so.0
#10 0x0000564b3228c1fb in gimp_text_set_font_from_xlfd (text=0x564b376d8700, xlfd=0x564b36069ee0 "-unknown-Book Antiqua-bold-r-normal-*-120-*-*-*-p-*-microsoft-easteurope}") at ../app/text/gimptext-xlfd.c:197
font = 0x564b36da9030 "book antiqu bol norma "
size = 12
size_unit = GIMP_UNIT_PIXEL
__func__ = "gimp_text_set_font_from_xlfd"
#11 0x0000564b3228bc93 in gimp_text_from_gdyntext_parasite (parasite=<optimized out>) at ../app/text/gimptext-parasite.c:291
retval = 0x564b376d8700
justify = <optimized out>
str = 0x564b373d5670 "GDT10{DYNAMICAL SYSTEMS AND QUANTIZATION }{1}{2}{0}{0}{000054}{0}{-unknown-Book Antiqua-bold-r-normal-*-120-*-*-*-p-*-microsoft-easteurope}"
text = 0x564b36d74190 "DYNAMICAL SYSTEMS AND QUANTIZATION "
params = 0x564b36dac370
parasite_data_size = 140
antialias = 1
spacing = 0
rgb = 0x564b36d6ab00
color = <optimized out>
i = <optimized out>
__func__ = "gimp_text_from_gdyntext_parasite"
#12 0x0000564b3228b2a0 in gimp_text_layer_xcf_load_hack (layer=layer@entry=0x7fffdd9f61e8) at ../app/text/gimptextlayer-xcf.c:100
name = 0x564b324df59a "plug_in_gdyntext/data"
text = 0x0
parasite = <optimized out>
before_xcf_v19 = 0
__func__ = "gimp_text_layer_xcf_load_hack"
#13 0x0000564b3223cef2 in xcf_load_layer (item_path=0x7fffdd9f61e0, image=<optimized out>, info=0x7fffdd9f6390) at ../app/xcf/xcf-load.c:3065
edit_mask = 0
layer_mask_offset = 140736911598448
apply_mask = 0
selected = 0x0
text_layer_flags = 0
effects_offset = 0
filter_count = 0
has_alpha = 1
cur_offset = <optimized out>
hierarchy_offset = 94880966488857
show_mask = 0
linked = 0x0
width = 2358
height = 119
base_type = GIMP_RGB
layer = 0x564b376ddfd0
layer_mask = <optimized out>
filter_data_list = 0x0
floating = 0
group_layer_flags = 0
type = 1
format = <optimized out>
is_fs_drawable = 0
name = 0x564b36bcf520 "000054"
layer = <optimized out>
layer_mask = <optimized out>
hierarchy_offset = <optimized out>
effects_offset = <optimized out>
layer_mask_offset = <optimized out>
apply_mask = <optimized out>
edit_mask = <optimized out>
show_mask = <optimized out>
selected = <optimized out>
linked = <optimized out>
filter_data_list = <optimized out>
floating = <optimized out>
group_layer_flags = <optimized out>
text_layer_flags = <optimized out>
filter_count = <optimized out>
width = <optimized out>
height = <optimized out>
type = <optimized out>
base_type = <optimized out>
has_alpha = <optimized out>
format = <optimized out>
is_fs_drawable = <optimized out>
name = <optimized out>
cur_offset = <optimized out>
__func__ = "xcf_load_layer"
error = <optimized out>
is_group_layer = <optimized out>
is_text_layer = <optimized out>
saved_pos = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
expanded = <optimized out>
filter_data = <optimized out>
#14 xcf_load_image (gimp=0x564b33877a60, info=0x7fffdd9f6390, error=0x7fffdd9f68d0) at ../app/xcf/xcf-load.c:626
layer = <optimized out>
item_path = 0x0
image = 0x564b376e1b30
parasite = <optimized out>
has_metadata = <optimized out>
saved_pos = 132
offset = 176
width = 4817
height = 3360
image_type = 0
precision = <optimized out>
num_successful_elements = 0
n_broken_layers = 0
n_broken_channels = 0
n_broken_vectors = 0
broken_paths = 0x0
group_layers = 0x0
syms = <optimized out>
iter = <optimized out>
__func__ = "xcf_load_image"
#15 0x0000564b322372f6 in xcf_load_stream (gimp=gimp@entry=0x564b33877a60, input=input@entry=0x564b36968230, input_file=input_file@entry=0x564b36130110, progress=progress@entry=0x564b360b6680, error=error@entry=0x7fffdd9f68d0) at ../app/xcf/xcf.c:298
info = {gimp = 0x564b33877a60, progress = 0x564b360b6680, input = 0x564b36968230, output = 0x0, seekable = 0x564b36968230, cp = 521, bytes_per_offset = 4, file = 0x564b36130110, tattoo_state = 767, selected_layers = 0x0, selected_channels = 0x0, selected_vectors = 0x0, linked_layers = 0x0, linked_channels = 0x0, linked_paths = 0x0, layer_sets = 0x0, channel_sets = 0x0, floating_sel_drawable = 0x0, floating_sel = 0x0, floating_sel_offset = 0, compression = COMPRESS_RLE, file_version = 0}
filename = 0x564b36967b30 "/home/tomaszg/foto/plakat/23/h/plakat-napis.xcf"
image = 0x0
id = "gimp xcf file"
success = 1
__func__ = "xcf_load_stream"
#16 0x0000564b322374b6 in xcf_load_invoker (procedure=0x564b3398f1c0, gimp=0x564b33877a60, context=<optimized out>, progress=0x564b360b6680, args=<optimized out>, error=0x7fffdd9f68d0) at ../app/xcf/xcf.c:426
return_vals = <optimized out>
image = 0x0
file = 0x564b36130110
input = 0x564b36968230
my_error = 0x0
#17 0x0000564b322050e9 in gimp_procedure_execute (procedure=procedure@entry=0x564b3398f1c0, gimp=0x564b33877a60, context=0x564b3610f380, context@entry=0x564b33a20a10, progress=progress@entry=0x564b360b6680, args=args@entry=0x564b3696fd80, error=error@entry=0x7fffdd9f68d0) at ../app/pdb/gimpprocedure.c:515
return_vals = <optimized out>
pdb_error = 0x0
__func__ = "gimp_procedure_execute"
#18 0x0000564b322018b9 in gimp_pdb_execute_procedure_by_name_args (pdb=pdb@entry=0x564b3398d400, context=context@entry=0x564b33a20a10, progress=progress@entry=0x564b360b6680, error=error@entry=0x7fffdd9f68d0, name=name@entry=0x564b324db2e4 "gimp-xcf-load", args=args@entry=0x564b3696fd80) at ../app/pdb/gimppdb.c:320
procedure = 0x564b3398f1c0
return_vals = 0x0
list = 0x564b3398fb10 = {0x564b3398f1c0}
__func__ = "gimp_pdb_execute_procedure_by_name_args"
#19 0x0000564b32201e30 in gimp_pdb_execute_procedure_by_name (pdb=<optimized out>, context=context@entry=0x564b33a20a10, progress=0x564b360b6680, error=error@entry=0x7fffdd9f68d0, name=<optimized out>) at ../app/pdb/gimppdb.c:503
procedure = 0x564b3398f1c0
args = 0x564b3696fd80
return_vals = <optimized out>
va_args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffdd9f6748, reg_save_area = 0x7fffdd9f6640}}
prev_value_type = <optimized out>
prev_int_value = <optimized out>
i = <optimized out>
__func__ = "gimp_pdb_execute_procedure_by_name"
#20 0x0000564b3214d14c in file_open_image (gimp=gimp@entry=0x564b33877a60, context=context@entry=0x564b33a20a10, progress=<optimized out>, progress@entry=0x564b360b6680, file=<optimized out>, file@entry=0x564b36130110, as_new=as_new@entry=0, file_proc=<optimized out>, file_proc@entry=0x0, run_mode=GIMP_RUN_INTERACTIVE, status=0x7fffdd9f68c4, mime_type=0x7fffdd9f6820, error=0x7fffdd9f68d0) at ../app/file/file-open.c:207
return_vals = <optimized out>
orig_file = 0x564b36130110
image = 0x0
local_file = <optimized out>
mounted = <optimized out>
my_error = 0x0
__func__ = "file_open_image"
#21 0x0000564b3214e1d7 in file_open_with_proc_and_display (gimp=gimp@entry=0x564b33877a60, context=0x564b33a20a10, progress=progress@entry=0x564b360b6680, file=file@entry=0x564b36130110, as_new=as_new@entry=0, file_proc=file_proc@entry=0x0, monitor=0x564b337db630, status=0x7fffdd9f68c4, error=0x7fffdd9f68d0) at ../app/file/file-open.c:506
image = <optimized out>
mime_type = 0x0
run_mode = <optimized out>
__func__ = "file_open_with_proc_and_display"
#22 0x0000564b3214e45a in file_open_with_display (gimp=gimp@entry=0x564b33877a60, context=<optimized out>, progress=progress@entry=0x564b360b6680, file=file@entry=0x564b36130110, as_new=as_new@entry=0, monitor=monitor@entry=0x564b337db630, status=0x7fffdd9f68c4, error=0x7fffdd9f68d0) at ../app/file/file-open.c:475
#23 0x0000564b3214ea65 in file_open_from_command_line (gimp=gimp@entry=0x564b33877a60, file=file@entry=0x564b36130110, as_new=0, monitor=monitor@entry=0x564b337db630) at ../app/file/file-open.c:685
image = <optimized out>
display = 0x564b360b6680
status = GIMP_PDB_EXECUTION_ERROR
success = 0
error = 0x0
__func__ = "file_open_from_command_line"
#24 0x0000564b32256c5b in app_activate_callback (app=0x564b33989f10, user_data=<optimized out>) at ../app/app.c:484
file = 0x564b36130110
i = <optimized out>
gimp = 0x564b33877a60
update_status_func = <optimized out>
filenames = <optimized out>
current_language = <optimized out>
prev_language = 0x564b33a98f00 "dialogs"
font_error = 0x0
batch_retval = <optimized out>
__func__ = "app_activate_callback"
#25 0x00007f41db26ffa0 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#26 0x00007f41db283e50 in ??? () at /usr/lib64/libgobject-2.0.so.0
#27 0x00007f41db2858b1 in ??? () at /usr/lib64/libgobject-2.0.so.0
#28 0x00007f41db28b6b6 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#29 0x00007f41db28b77b in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#30 0x00007f41daf0b6a8 in ??? () at /usr/lib64/libgio-2.0.so.0
#31 0x00007f41daf0b7f8 in g_application_run () at /usr/lib64/libgio-2.0.so.0
#32 0x0000564b322571ee in app_run (full_prog_name=0x564b336d0a70 "gimp-2.99", filenames=<optimized out>, alternate_system_gimprc=alternate_system_gimprc@entry=0x0, alternate_gimprc=alternate_gimprc@entry=0x0, session_name=<optimized out>, batch_interpreter=<optimized out>, batch_commands=0x0, quit=0, as_new=0, no_interface=0, no_data=<optimized out>, no_fonts=<optimized out>, no_splash=0, be_verbose=0, use_shm=1, use_cpu_accel=1, console_messages=0, use_debug_handler=0, show_playground=1, show_debug_menu=1, stack_trace_mode=GIMP_STACK_TRACE_QUERY, pdb_compat_mode=<optimized out>, backtrace_file=0x564b336b4550 "/home/tomaszg/.config/GIMP/2.99/CrashLog/gimp-crash-1715794962.txt") at ../app/app.c:317
gimp = 0x564b33877a60
app = 0x564b33989f10
default_folder = 0x0
gimpdir = 0x564b3396d410
abort_message = <optimized out>
retval = 0
__func__ = "app_run"
#33 0x0000564b3208345f in main (argc=<optimized out>, argv=<optimized out>) at ../app/main.c:786
context = 0x564b336d1ab0
error = 0x0
abort_message = <optimized out>
basename = <optimized out>
system_gimprc_file = 0x0
user_gimprc_file = 0x0
gimp_group = <optimized out>
backtrace_file = 0x564b336b4550 "/home/tomaszg/.config/GIMP/2.99/CrashLog/gimp-crash-1715794962.txt"
retval = <optimized out>
i = <optimized out>
[Inferior 1 (process 30673) detached]