GIMP 2.99.19 - Switching filter presets causes gegl:styles internal gegl:crop aux to crash GIMP because gegl:layer's image file was resized
Environment/Versions
- GIMP version: GIMP 2.99.19 from mid April 2024
- Package: Source build
- Operating System: LINUX FEDORA 38
Description of the bug
An official filter in GIMP called GEGL Styles depends on a internal GEGL op called gegl:layer for image uploads. It use to crash when GEGL layer uploaded an image; it no longer does this behavior but now there is a new problem that likely always existed and we didn't know about it.
If a user uploads an image to GEGL Styles - saves a preset of it then uploads another image and saves a new preset - switching back to the old preset will crash GIMP
Reproduction
Is the bug reproducible?
Always
Reproduction steps:
- Open GEGL Styles generic>text styling in GIMP 2.99.19/GEGL 0.4.49 and go to the second tab and enable inner glow
- Now go to the third "Part of filter to be displayed" drop down tab in GEGL Styles and enable Image upload
- Upload an image from your computer from the "Image file overlay" button
- Save the GEGL filter's current content as a GEGL preset
- Upload a second image file to replace the original image. Make sure it has a different width and height.
- Save the second image file as a second preset
- Switch presets for GEGL Styles in the GEGL preset list
- GIMP will crash
- You can test with presets that don't have image files and there won't be a crash and you can test without inner glow and realize there won't be a crash. You can edit the source code and remove the needed crop node and there won't be a crash; at the expense of another bug. …
Expected result: GIMP crashes
Actual result: GIMP doesn't crash and simply changes the preset with the image file
Additional information
The reason this happens has been confirmed
The oversimplifying GEGL Graph looks something like this internally
layer src=imagefile.png id=1 gegl:crop aux=[ ref=1 ]
When a image file of different width and height is present GEGL crop loses info of the previous image file and crashes.
layer src=larger_imagefile.png id=1 gegl:crop aux=[ ref=1 ]
The goal is to instruct GEGL crop to update to the width and height of the new image file; it does so inside gegl:graph syntax but not in GIMP filters. So once again doing this syntax only in GEGL Graph doesn't crash GIMP.
Originally I thought this had to do with GTK3 widgets based on talks with CMYK Student but now I know this bug is NOT related to this #10371 (closed)
This problem also happens on GIMP 2.10.36 against GEGL 0.4.44
If you have a backtrace for a crash or a warning, paste it here.
`
GNU Image Manipulation Program version 2.99.19
git-describe: unknown (unsupported)
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-redhat-linux/13/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-13.2.1-20231011/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none --without-cuda-driver --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20231011 (Red Hat 13.2.1-4) (GCC)
# 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.76.6 (compiled against version 2.76.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.50.14 (compiled against version 1.50.14)
using Fontconfig version 2.14.2 (compiled against version 2.14.2)
using Cairo version 1.17.8 (compiled against version 1.17.8)
fatal error: Segmentation fault
Stack trace:
# Stack traces obtained from PID 833212 - Thread 833212 #
[New LWP 833215]
[New LWP 833216]
[New LWP 833217]
[New LWP 833218]
[New LWP 833219]
[New LWP 833220]
[New LWP 833221]
[New LWP 833301]
[New LWP 833313]
[New LWP 833430]
[New LWP 833513]
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.fedoraproject.org/>
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.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f2e8608910a in read () from /lib64/libc.so.6
Id Target Id Frame
* 1 Thread 0x7f2e83c2f000 (LWP 833212) "gimp-2.99" 0x00007f2e8608910a in read () from /lib64/libc.so.6
2 Thread 0x7f2e765bf6c0 (LWP 833215) "pool-spawner" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
3 Thread 0x7f2e75dbe6c0 (LWP 833216) "gmain" 0x00007f2e8608d36d in poll () from /lib64/libc.so.6
4 Thread 0x7f2e755bd6c0 (LWP 833217) "gdbus" 0x00007f2e8608d36d in poll () from /lib64/libc.so.6
5 Thread 0x7f2e74a3f6c0 (LWP 833218) "worker" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
6 Thread 0x7f2e67fff6c0 (LWP 833219) "worker" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
7 Thread 0x7f2e677fe6c0 (LWP 833220) "worker" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
8 Thread 0x7f2d5550a6c0 (LWP 833221) "async" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
9 Thread 0x7f2d310586c0 (LWP 833301) "dconf worker" 0x00007f2e8608d36d in poll () from /lib64/libc.so.6
10 Thread 0x7f2d2b7fe6c0 (LWP 833313) "dashboard" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
11 Thread 0x7f2d3285b6c0 (LWP 833430) "swap writer" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
12 Thread 0x7f2d2bfff6c0 (LWP 833513) "pool-gimp-2.99" 0x00007f2e86092c5d in syscall () from /lib64/libc.so.6
#0 0x00007f2e8608910a in read () at /lib64/libc.so.6
#1 0x00007f2e87a9d1db in gimp_stack_trace_print (prog_name=<optimized out>, stream=stream@entry=0x46dcf0a0, trace=trace@entry=0x0) at ../libgimpbase/gimputils.c:1394
status = -2025295568
stack_printed = 0
gtrace = 0x0
gimp_pid = "833212\000\000\300⮇.\177\000"
buffer = "\312\003\000\000\000\000\000\000\310\023I\000\000\000\000\000P\276\256\000\000\000\000\000\300\271\341F\000\000\000\000\360\002\261-\376\177\000\000=\236\254\207.\177\000\000\005", '\000' <repeats 15 times>, "hs\250\207.\177\000\000\020ϩ\207.\177\000\000\302\200\264\320\000\000\000\000\260\006\261-\376\177\000\000\001\000\000\000\000\000\000\000\020\272\341F\000\000\000\000\200 \353E\000\000\000\000\300\271\341F\000\000\000\000)\302\224\000\000\000\000\000\316¬\207.\177\000\000\240\360\334F", '\000' <repeats 20 times>, "\240\360\334F\000\000\000\000\260\235\023\001", '\000' <repeats 12 times>, "\001\000\000\000\000\000\000\000H殇.\177"...
read_n = <optimized out>
sync_fd = {24, 25}
out_fd = {26, 27}
fork_pid = <optimized out>
pid = 833212
eintr_count = 0
tid = <optimized out>
#2 0x000000000066c140 in gimp_eek (reason=reason@entry=0x94c229 "fatal error", message=<optimized out>, use_handler=use_handler@entry=1) at ../app/errors.c:355
fd = 0x46dcf0a0
has_backtrace = 1
pid = "833212\000\000\375+\000\000\000\000\000"
gimpdebug = 0x94c240 "/home/contrast/Applications/gimp_nde/libexec/gimp-debug-tool-2.99"
args = {0x94c240 "/home/contrast/Applications/gimp_nde/libexec/gimp-debug-tool-2.99", 0x1139db0 "/home/contrast/Applications/gimp_nde//bin/gimp-2.99", 0x7ffe2db10700 "833212", 0x94c229 "fatal error", 0x4495ecf4 "Segmentation fault", 0x1135a40 "/home/contrast/.config/GIMP/2.99/CrashLog/gimp-crash-1714703275.txt", 0x0, 0x7ffe2db10710 "0", 0x0}
timestamp = "0\000\225D\000\000\000\000`\361\022\206.\177\000"
config = <optimized out>
eek_handled = 0
debug_policy = GIMP_DEBUG_POLICY_WARNING
iter = <optimized out>
num_idx = <optimized out>
i = 0
#3 0x000000000066c738 in gimp_fatal_error (message=<optimized out>) at ../app/errors.c:206
#4 0x000000000066f089 in gimp_sigfatal_handler (sig_num=11) at ../app/signals.c:196
#5 0x00007f2e85fc5bb0 in <signal handler called> () at /lib64/libc.so.6
#6 0x00007f2e873f3447 in gegl_operation_prepare (self=0x45dfb470) at ../gegl/operation/gegl-operation.c:349
klass = <optimized out>
__func__ = "gegl_operation_prepare"
#7 0x00007f2e873f6e35 in gegl_graph_prepare (path=0x45eb2080) at ../gegl/process/gegl-graph-traversal.c:221
node = 0x45dfb910
parent = 0x45eb1c60
operation = <optimized out>
list_iter = 0x46e8a880 = {0x45dfb910, 0x45df6f10, 0x45eb0e30, 0x45eb14b0, 0x45eb0820, 0x45eaffe0, 0x45eaf600, 0x45eb2de0, 0x45eb33b0, 0x45439d40, 0x4547bc30, 0x45e8b1f0, 0x454de630, 0x45ed1ab0, 0x45ed1fe0, 0x4600fa40, 0x45e37090, 0x454fc700, 0x45e5b760, 0x454fcd80, 0x4534cdb0, 0x45eeafc0, 0x45eea8d0, 0x454f79c0, 0x453477f0, 0x45ee80d0, 0x45e9ec20, 0x45589cc0, 0x45e37560, 0x4600f5b0, 0x45e515d0, 0x454a0040, 0x45361120, 0x453615b0, 0x454a04e0, 0x45ea7200, 0x45dcb650, 0x454e48d0, 0x4545cfb0}
#8 0x00007f2e873f6214 in gegl_eval_manager_prepare (self=0x45df3cb0) at ../gegl/process/gegl-eval-manager.c:93
__func__ = "gegl_eval_manager_prepare"
_g_boolean_var_10 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#9 0x00007f2e873f63b2 in gegl_eval_manager_prepare (self=0x45df3cb0) at ../gegl/process/gegl-eval-manager.c:83
__func__ = "gegl_eval_manager_prepare"
_g_boolean_var_10 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
_g_boolean_var_11 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#10 gegl_eval_manager_get_bounding_box (self=self@entry=0x45df3cb0) at ../gegl/process/gegl-eval-manager.c:102
#11 0x00007f2e873d8c67 in gegl_node_get_bounding_box (self=self@entry=0x4545cfb0) at ../gegl/graph/gegl-node.c:1877
eval = 0x45df3cb0
#12 0x00007f2e7421ea43 in gegl_crop_update_rect (operation=0x453355f0) at ../operations/core/crop.c:92
rect = {x = <optimized out>, y = <optimized out>, width = <optimized out>, height = <optimized out>}
source_node = <optimized out>
o = <optimized out>
state = <optimized out>
o = <optimized out>
state = <optimized out>
source_node = <optimized out>
rect = {x = <optimized out>, y = <optimized out>, width = <optimized out>, height = <optimized out>}
#13 gegl_crop_get_invalidated_by_change (operation=0x453355f0, input_pad=<optimized out>, input_region=0x46e9e7c0) at ../operations/core/crop.c:175
o = <optimized out>
result = {x = 766578384, y = 32766, width = -2023767274, height = 32558}
state = <optimized out>
#14 0x00007f2e873d6a99 in gegl_node_invalidated_invalidate_node (node=<optimized out>, data=0x46ea8cd0) at ../gegl/graph/gegl-node.c:762
invalidated_rect = {x = 1173027696, y = 0, width = 1180246080, height = 0}
connection = <optimized out>
sink_node = 0x45335500
sink_pad = 0x45335970
sink_rect = 0x46592d80
rects = 0x46ea8cd0
rect = 0x46e9e7c0
iter = 0x454e4480 = {0x454e47a0, 0x454e4430, 0x4546c130}
#15 0x00007f2e873e31bb in gegl_visitor_traverse_reverse_topological (self=self@entry=0x459b0390, visitable=0x4545d050) at ../gegl/graph/gegl-visitor.c:264
visited_set = 0x46e94fc0
stack = 0x464fc090 = {0x449a2520, 0x454436f0, 0x45443720, 0x45490390, 0x4557dca0, 0x449a2c10, 0x45ea8660, 0x45e97300, 0x45e97d80, 0x454dc900, 0x454df620, 0x454dcd80, 0x454e02d0, 0x45f40fe0, 0x45ea8330, 0x45465ec0, 0x45ea80a0, 0x4558ee10, 0x4548fd10, 0x45468f70, 0x454a9df0, 0x45584a30, 0x45e03880, 0x454e4b70, 0x45f44be0, 0x435cc380, 0x45edd820, 0x449beff0, 0x45edbfa0, 0x45edbbf0, 0x45ed8d80, 0x44618680, 0x44ab1750, 0x45891ca0, 0x4425cae0, 0x45e3f990, 0x42834a60, 0x45f44d20, 0x45fefc00, 0x44a42aa0, 0x45ea6530, 0x454e25e0, 0x43db5960, 0x45374df0, 0x4541a700, 0x45430f20, 0x4540fc40, 0x45e581f0, 0x44ac4b30, 0x45f3b430, 0x45580dd0, 0x43d1ba00, 0x43b94c40, 0x44a43f00, 0x45594d70, 0x44c0a370, 0x45500ca0, 0x454e4770, 0x454d2bc0, 0x454e2560, 0x4535e220, 0x45ef9d60, 0x459a3170, 0x4599d2e0, 0x43bd4260, 0x435da590, 0x45993840, 0x4597cee0, 0x458fc270, 0x45987b50, 0x4598ad30, 0x458fc060, 0x4383c2a0, 0x43f3bb90, 0x41d62aa0, 0x44e19b70, 0x43ba3ab0, 0x439ad5f0, 0x4530af10, 0x4331f0c0, 0x45313580, 0x44e1a6e0}
__func__ = "gegl_visitor_traverse_reverse_topological"
#16 0x00007f2e873d6e46 in gegl_node_invalidated (node=0x45df6f10, rect=<optimized out>, clear_cache=<optimized out>) at ../gegl/graph/gegl-node.c:804
rects = 0x46ea8cd0
visitor = 0x459b0390
__func__ = "gegl_node_invalidated"
_g_boolean_var_23 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#17 0x00007f2e873d8b9c in gegl_node_invalidated (clear_cache=0, rect=0x7ffe2db11010, node=0x45df6f10) at ../gegl/graph/gegl-node.c:785
rects = <optimized out>
visitor = <optimized out>
rects = <optimized out>
visitor = <optimized out>
__func__ = "gegl_node_invalidated"
_g_boolean_var_23 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#18 gegl_node_source_invalidated (source=source@entry=0x45dfb910, destination_pad=destination_pad@entry=0x4544ec90, rect=rect@entry=0x45dfb930) at ../gegl/graph/gegl-node.c:839
destination = 0x45df6f10
dirty_rect = {x = 0, y = 0, width = 1620, height = 862}
#19 0x00007f2e873da98c in gegl_node_disconnect (sink=<optimized out>, sink_pad_name=<optimized out>) at ../gegl/graph/gegl-node.c:998
sink_pad = 0x4544ec90
connection = 0x45eb1b30
source = 0x45dfb910
source_pad = 0x45dfcf60
real_sink = <optimized out>
real_sink_pad_name = <optimized out>
__func__ = "gegl_node_disconnect"
#20 0x00007f2e873dab9f in gegl_node_disconnect_sources (self=0x45df6f10) at ../gegl/graph/gegl-node.c:1029
sink = 0x45df6f10
sink_pad = <optimized out>
sink_pad_name = <optimized out>
connection = 0x45eb1b30
__func__ = "gegl_node_disconnect_sources"
connection = <optimized out>
sink = <optimized out>
sink_pad = <optimized out>
sink_pad_name = <optimized out>
_g_boolean_var_28 = <optimized out>
#21 gegl_node_finalize (gobject=0x45df6f10) at ../gegl/graph/gegl-node.c:282
self = 0x45df6f10
#22 0x00007f2e875e3a53 in g_object_unref () at /lib64/libgobject-2.0.so.0
#23 0x00007f2e873d9ebf in gegl_node_remove_child (self=0x45eb1c60, child=0x45df6f10) at ../gegl/graph/gegl-node.c:2215
__func__ = "gegl_node_remove_child"
#24 0x00007f2e873da07e in gegl_node_remove_pad (pad=0x45df9460, self=0x45eb1c60) at ../gegl/graph/gegl-node.c:540
pad_node = <optimized out>
pad_node = <optimized out>
__func__ = "gegl_node_remove_pad"
_g_boolean_var_18 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
_g_boolean_var_19 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#25 gegl_node_remove_pad (self=0x45eb1c60, pad=0x45df9460) at ../gegl/graph/gegl-node.c:520
pad_node = <optimized out>
__func__ = "gegl_node_remove_pad"
_g_boolean_var_19 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#26 0x00007f2e873dba0b in gegl_node_set_operation_object (self=0x45eb1c60, operation=0x45dfb470) at ../gegl/graph/gegl-node.c:1454
consumer_nodes = 0x45b8d5b0
consumer_names = 0x465a05e0
input = 0x0
aux = 0x0
aux2 = 0x0
__func__ = "gegl_node_set_operation_object"
#27 0x00007f2e873dbe54 in gegl_node_set_op_class (node=0x45eb1c60, op_class=<optimized out>, first_property=<optimized out>, var_args=0x7ffe2db112d8) at ../gegl/graph/gegl-node.c:1356
type = <optimized out>
operation = 0x45dfb470
__func__ = "gegl_node_set_op_class"
#28 0x00007f2e873dc211 in gegl_node_set_valist (self=0x45eb1c60, first_property_name=<optimized out>, var_args=0x7ffe2db112d8) at ../gegl/graph/gegl-node.c:1550
op_class = 0x7f2e656d21ef "gegl:load"
op_first_property = 0x0
property_name = <optimized out>
__func__ = "gegl_node_set_valist"
_g_boolean_var_45 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
#29 0x00007f2e873dc680 in gegl_node_set_valist (var_args=0x7ffe2db112d8, first_property_name=0x7f2e6567f653 "operation", self=0x45eb1c60) at ../gegl/graph/gegl-node.c:1527
property_name = <optimized out>
property_name = <optimized out>
__func__ = "gegl_node_set_valist"
_g_boolean_var_45 = <optimized out>
__inst = <optimized out>
__t = <optimized out>
__r = <optimized out>
op_class = <optimized out>
op_first_property = <optimized out>
value = {g_type = <optimized out>, data = {{v_int = <optimized out>, v_uint = <optimized out>, v_long = <optimized out>, v_ulong = <optimized out>, v_int64 = <optimized out>, v_uint64 = <optimized out>, v_float = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_uint = <optimized out>, v_long = <optimized out>, v_ulong = <optimized out>, v_int64 = <optimized out>, v_uint64 = <optimized out>, v_float = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}}}
pspec = <optimized out>
error = <optimized out>
object = <optimized out>
g_vc_value = <optimized out>
g_vc_value_type = <optimized out>
g_vc_vtable = <optimized out>
g_vci_vtab = <optimized out>
g_vci_val = <optimized out>
g_vci_flags = <optimized out>
g_vci_collect_format = <optimized out>
g_vci_cvalues = {{v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}, {v_int = <optimized out>, v_long = <optimized out>, v_int64 = <optimized out>, v_double = <optimized out>, v_pointer = <optimized out>}}
g_vci_n_values = <optimized out>
g_vci_cvalue = <optimized out>
#30 gegl_node_set (self=0x45eb1c60, first_property_name=first_property_name@entry=0x7f2e6567f653 "operation") at ../gegl/graph/gegl-node.c:1501
var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffe2db113c0, reg_save_area = 0x7ffe2db112f0}}
__func__ = "gegl_node_set"
#31 0x00007f2e6561e16d in update_graph (operation=0x45ea7830) at ../operations/common/layer.c:132
o = 0x45ea6490
self = 0x45ea7830
#32 0x00007f2e875d54ea in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#33 0x00007f2e87603e16 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#34 0x00007f2e875f4cbd in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#35 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#36 0x00007f2e875e06b4 in g_object_dispatch_properties_changed.lto_priv () at /lib64/libgobject-2.0.so.0
#37 0x00007f2e875d5ab0 in g_object_notify_queue_thaw.lto_priv () at /lib64/libgobject-2.0.so.0
#38 0x00007f2e875e8674 in g_object_setv () at /lib64/libgobject-2.0.so.0
#39 0x00007f2e875e8891 in g_object_set_property () at /lib64/libgobject-2.0.so.0
#40 0x00007f2e875d6a77 in on_source_notify () at /lib64/libgobject-2.0.so.0
#41 0x00007f2e875d54ea in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#42 0x00007f2e87603e16 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#43 0x00007f2e875f4cbd in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#44 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#45 0x00007f2e875e06b4 in g_object_dispatch_properties_changed.lto_priv () at /lib64/libgobject-2.0.so.0
#46 0x00007f2e875d5ab0 in g_object_notify_queue_thaw.lto_priv () at /lib64/libgobject-2.0.so.0
#47 0x00007f2e875e8674 in g_object_setv () at /lib64/libgobject-2.0.so.0
#48 0x00007f2e875e8891 in g_object_set_property () at /lib64/libgobject-2.0.so.0
#49 0x000000000068a9ca in gimp_operation_config_config_notify (config=0x45df9290, gimp_pspec=0x21273, node=0x45ef9c90) at ../app/operations/gimp-operation-config.c:530
value = {g_type = , data = {{v_int = 1189718304, v_uint = 1189718304, v_long = 1189718304, v_ulong = 1189718304, v_int64 = 1189718304, v_uint64 = 1189718304, v_float = 29908.5625, v_double = 5.8779894223491249e-315, v_pointer = 0x46e9a920}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
handler = 135795
gegl_pspec = 0x115ceb0
#50 0x00007f2e875d54ea in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#51 0x00007f2e87603e16 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#52 0x00007f2e875f4cbd in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#53 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#54 0x00007f2e875e06b4 in g_object_dispatch_properties_changed.lto_priv () at /lib64/libgobject-2.0.so.0
#55 0x00007f2e875d5ab0 in g_object_notify_queue_thaw.lto_priv () at /lib64/libgobject-2.0.so.0
#56 0x00007f2e875e3dbe in g_object_thaw_notify () at /lib64/libgobject-2.0.so.0
#57 0x00007f2e87a58950 in gimp_config_copy (src=src@entry=0x458dab70, dest=0x45df9290, flags=flags@entry=0) at ../libgimpconfig/gimpconfig-iface.c:836
changed = 1
__func__ = "gimp_config_copy"
#58 0x00000000006c0bf1 in gimp_filter_tool_real_set_config (filter_tool=0x44825a80, config=0x458dab70) at ../app/tools/gimpfiltertool.c:920
region = GIMP_FILTER_REGION_DRAWABLE
#59 0x00000000006d7924 in gimp_operation_tool_set_config (filter_tool=0x44825a80, config=0x458dab70) at ../app/tools/gimpoperationtool.c:309
op_tool = 0x44825a80
#60 0x00000000006c296c in gimp_filter_tool_set_config (filter_tool=0x44825a80, config=0x458dab70) at ../app/tools/gimpfiltertool.c:1946
__func__ = "gimp_filter_tool_set_config"
#61 0x00007f2e875d3f67 in g_cclosure_marshal_VOID__OBJECTv () at /lib64/libgobject-2.0.so.0
#62 0x00007f2e875f4dba in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#63 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#64 0x000000000077dbb3 in gimp_settings_box_setting_selected (view=<optimized out>, objects=0x46e65ae0 = {...}, paths=<optimized out>, box=0x45911930) at ../app/widgets/gimpsettingsbox.c:564
__func__ = "gimp_settings_box_setting_selected"
#65 0x00007f2e85c68be6 in ffi_call_unix64 () at /lib64/libffi.so.8
#66 0x00007f2e85c654bf in ffi_call_int.lto_priv () at /lib64/libffi.so.8
#67 0x00007f2e85c6818e in ffi_call () at /lib64/libffi.so.8
#68 0x00007f2e875dbad2 in g_cclosure_marshal_generic () at /lib64/libgobject-2.0.so.0
#69 0x00007f2e875d54ea in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#70 0x00007f2e8760415d in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#71 0x00007f2e875f47e2 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#72 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#73 0x0000000000733d5d in gimp_container_view_select_items (view=view@entry=0x458fe6b0, viewables=viewables@entry=0x46e65ae0 = {...}) at ../app/widgets/gimpcontainerview.c:519
private = <optimized out>
success = 0
__func__ = "gimp_container_view_select_items"
#74 0x0000000000733e76 in gimp_container_view_select_item (view=view@entry=0x458fe6b0, viewable=<optimized out>) at ../app/widgets/gimpcontainerview.c:541
viewables = 0x46e65ae0 = {0x458dab70}
success = <optimized out>
#75 0x0000000000734499 in gimp_container_view_item_selected (view=view@entry=0x458fe6b0, viewable=<optimized out>) at ../app/widgets/gimpcontainerview.c:637
private = <optimized out>
success = 0
__func__ = "gimp_container_view_item_selected"
#76 0x0000000000731133 in gimp_container_combo_box_changed (combo=0x458fe6b0, view=0x458fe6b0) at ../app/widgets/gimpcontainercombobox.c:483
renderer = 0x4591a280
iter = {stamp = -500697875, user_data = 0x45918900, user_data2 = 0x0, user_data3 = 0x0}
#77 0x00007f2e875f4dba in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#78 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#79 0x00007f2e865f6226 in gtk_combo_box_set_active_internal () at /lib64/libgtk-3.so.0
#80 0x00007f2e865f692d in gtk_combo_box_set_active_iter () at /lib64/libgtk-3.so.0
#81 0x00007f2e865f6dab in gtk_combo_box_menu_activate () at /lib64/libgtk-3.so.0
#82 0x00007f2e875d3dab in g_cclosure_marshal_VOID__STRINGv () at /lib64/libgobject-2.0.so.0
#83 0x00007f2e875f4dba in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#84 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#85 0x00007f2e8680b013 in item_activated_cb.lto_priv () at /lib64/libgtk-3.so.0
#86 0x00007f2e875d54ea in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#87 0x00007f2e87603e16 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0
#88 0x00007f2e875f4cbd in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#89 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#90 0x00007f2e8684294c in gtk_widget_activate () at /lib64/libgtk-3.so.0
#91 0x00007f2e86701ea6 in gtk_menu_shell_activate_item () at /lib64/libgtk-3.so.0
#92 0x00007f2e867021f1 in gtk_menu_shell_button_release () at /lib64/libgtk-3.so.0
#93 0x00007f2e8657d047 in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
#94 0x00007f2e875f4dba in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#95 0x00007f2e875f4f33 in g_signal_emit () at /lib64/libgobject-2.0.so.0
#96 0x00007f2e86854434 in gtk_widget_event_internal.part.0.lto_priv () at /lib64/libgtk-3.so.0
#97 0x00007f2e866eb5a0 in propagate_event.lto_priv () at /lib64/libgtk-3.so.0
#98 0x00007f2e866ec13a in gtk_main_do_event () at /lib64/libgtk-3.so.0
#99 0x00007f2e86422417 in _gdk_event_emit () at /lib64/libgdk-3.so.0
#100 0x00007f2e8647beee in gdk_event_source_dispatch.lto_priv () at /lib64/libgdk-3.so.0
#101 0x00007f2e874d44fc in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#102 0x00007f2e875326b8 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#103 0x00007f2e874d1b83 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#104 0x00007f2e8723b01d in g_application_run () at /lib64/libgio-2.0.so.0
#105 0x000000000066bc6a in app_run (full_prog_name=0xd08b00 "/home/contrast/Applications/gimp_nde//bin/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=0xcecef0 "/home/contrast/.config/GIMP/2.99/CrashLog/gimp-crash-1714703275.txt") at ../app/app.c:317
gimp = 0xf02ac0
app = 0xe13350
default_folder = 0x0
gimpdir = 0xf89360
abort_message = <optimized out>
retval = 0
__func__ = "app_run"
#106 0x00000000004abd35 in main (argc=<optimized out>, argv=<optimized out>) at ../app/main.c:786
context = 0xd08b80
error = 0x0
abort_message = <optimized out>
basename = <optimized out>
system_gimprc_file = 0x0
user_gimprc_file = 0x0
gimp_group = <optimized out>
backtrace_file = 0xcecef0 "/home/contrast/.config/GIMP/2.99/CrashLog/gimp-crash-1714703275.txt"
retval = <optimized out>
i = <optimized out>
[Inferior 1 (process 833212) detached]