NDE: Double click of remove filter in the NDE pop-up causes a crash on an active Warp or Gradient
Environment/Versions
- GIMP version: 2.99.19 commit 5f38c37b
- Package: self-build
- Operating System: Linux Mint X11
Always Description of the bug
Reproduction steps:
- Create a 2K image
- Apply a large warp with the warp tool, do not commit the warp.
- Click the fx icon on the layer to show the NDE pop-up, no filter is selected in the pop-up
- Click the 'X' to remove the filter, the warp starts committing, click the X again while the warp is still committing
- Crash
...
- Create a 2K image
- Apply a gradient with the gradient tool.
- Click the fx icon on the layer to show the NDE pop-up
- Double Click the 'X'
- Crash …
Expected result: The Warp is discarded without comitting
Actual result: The Warp tries to commit and the app crash
Additional information
The Same crash happens with the Gradient Tool instead of the Warp Tool
[Thread 0x7fff71ffb640 (LWP 88260) exited] GIMP-WARNING: gimp_properties_append_valist: invalid unclassed object pointer for value type 'GimpDrawableFilter'
Gimp-Core:ERROR:../app/core/gimpdrawablefilterundo.c:105:gimp_drawable_filter_undo_constructed: assertion failed: (GIMP_IS_DRAWABLE_FILTER (drawable_filter_undo->filter))
Bail out! Gimp-Core:ERROR:../app/core/gimpdrawablefilterundo.c:105:gimp_drawable_filter_undo_constructed: assertion failed: (GIMP_IS_DRAWABLE_FILTER (drawable_filter_undo->filter))
Thread 1 "gimp-2.99" received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:44
Download failed: Invalid argument. Continuing without source file ./nptl/./nptl/pthread_kill.c.
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt full
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:44
tid = <optimised out>
ret = 0
pd = 0x7ffff48fff40
old_mask = {__val = {2048, 140737324887168, 2064, 129, 95, 140737323354049, 140737324887264, 0, 7, 140737323200938, 347728885864, 2048, 93825133268992, 8254982545369220403, 143, 2096}}
ret = <optimised out>
#1 __pthread_kill_internal (signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=140737296465728, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff6242476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
ret = <optimised out>
#4 0x00007ffff62287f3 in __GI_abort () at ./stdlib/abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0xc2, sa_sigaction = 0xc2}, sa_mask = {__val = {194, 93825124289536, 140737347552567, 93825132909248, 140737488340976, 32, 93825118248704, 0, 7725103043691686400, 80, 18446744073709550464, 0, 171, 140737488341072, 93825000840864, 93825000840864}}, sa_flags = -164998061, sa_restorer = 0x55555cd81f00}
sigs = {__val = {32, 140737324887168, 4294953040, 0, 93825000840864, 7725103043691686400, 93825006791328, 18446744073709550464, 0, 140737488340968, 194, 1, 93825118248704, 140737323357267, 93825118248704, 140737347532135}}
#5 0x00007ffff795cb57 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6 0x00007ffff79b670f in g_assertion_message_expr () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00005555557d0a64 in gimp_drawable_filter_undo_constructed (object=0x55555bac9f30) at ../app/core/gimpdrawablefilterundo.c:105
drawable_filter_undo = 0x55555bac9f30
drawable = 0x7fffffffca70
filter_stack = 0x55555cf52650
__func__ = "gimp_drawable_filter_undo_constructed"
#8 0x00007ffff7a9d1df in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007ffff7a9e407 in g_object_new_with_properties () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x00005555557ade38 in gimp_image_undo_pushPython Exception <class 'gdb.error'>: No type named TypeNode.
(image=0x55555d15c590, object_type=, undo_type=GIMP_UNDO_FILTER_REMOVE, name=0x555555e375e6 "Remove filter", dirty_mask=GIMP_DIRTY_DRAWABLE) at ../app/core/gimpimage-undo.c:401
private = 0x55555d15c2f0
--Type <RET> for more, q to quit, c to continue without paging--
n_properties = 4
names = 0x55555d073360
values = 0x55555dbbd800
args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffcc48, reg_save_area = 0x7fffffffcb70}}
undo = 0x0
__func__ = "gimp_image_undo_push"
#11 0x00005555557a7b18 in gimp_image_undo_push_filter_remove
(image=0x55555d15c590, undo_desc=0x555555e375e6 "Remove filter", drawable=0x55555cfe6410, filter=0x55555cd448e0)
at ../app/core/gimpimage-undo-push.c:339
__func__ = "gimp_image_undo_push_filter_remove"
#12 0x0000555555b3971d in gimp_item_tree_view_effects_removed_clicked (widget=0x55555c490a40, view=0x55555c3cd590)
at ../app/widgets/gimpitemtreeview.c:2801
filters = 0x55555d151490
image = 0x55555d15c590
#13 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff693dab0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#18 0x00007ffff693d884 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff6bf0c15 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff6a07ffc in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#23 0x00007ffff7a91866 in g_cclosure_marshal_VOID__BOXEDv () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#26 0x00007ffff69ffacb in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#27 0x00007ffff6a0783b in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007ffff6a08443 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#29 0x00007ffff69cefa0 in gtk_event_controller_handle_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#30 0x00007ffff6ba0075 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#31 0x00007ffff6be6ee8 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#32 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#33 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#34 0x00007ffff6bae754 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#35 0x00007ffff6a516b0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#36 0x00007ffff6a5255a in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#37 0x00007ffff70bb743 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#38 0x00007ffff70f2f56 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#39 0x00007ffff7993d3b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007ffff79e92b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007ffff79913e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007ffff76cefb5 in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#43 0x000055555599e62b in app_run
(full_prog_name=0x555555fe86d0 "/home/mark/Code/gimp-source/bin/gimp-2.99", filenames=0x0, alternate_system_gimprc=0x0, alternate_gimprc=0x0, session_name=0x0, batch_interpreter=0x0, batch_commands=0x0, quit=0, as_new=0, no_interface=0, no_data=0, no_fonts=0, no_splash=1, be_verbose=1, use_shm=1, use_cpu_accel=1, console_messages=1, use_debug_handler=0, show_playground=1, show_debug_menu=1, stack_trace_mode=GIMP_STACK_TRACE_QUERY, pdb_compat_mode=GIMP_PDB_COMPAT_WARN, backtrace_file=0x555555fdcd80 "/home/mark/.config/GIMP/2.99/CrashLog/gimp-crash-1716306322.txt") at ../app/app.c:317
gimp = 0x5555563920a0
app = 0x5555563af0f0
default_folder = 0x0
gimpdir = 0x55555621c140
abort_message = 0x0
retval = 0
__func__ = "app_run"
#44 0x00005555556b513f in main (argc=4, argv=0x555555fe89e0) at ../app/main.c:786
context = 0x555555fe8aa0
error = 0x0
abort_message = 0x0
basename = 0x555555fe8a10 "0\212\376UUU"
system_gimprc_file = 0x0
user_gimprc_file = 0x0
gimp_group = 0x555555fe9170
backtrace_file = 0x555555fdcd80 "/home/mark/.config/GIMP/2.99/CrashLog/gimp-crash-1716306322.txt"
retval = 0
i = 4
gradient
GIMP-WARNING: gimp_properties_append_valist: invalid unclassed object pointer for value type 'GimpDrawableFilter'
**
Gimp-Core:ERROR:../app/core/gimpdrawablefilterundo.c:105:gimp_drawable_filter_undo_constructed: assertion failed: (GIMP_IS_DRAWABLE_FILTER (drawable_filter_undo->filter))
Bail out! Gimp-Core:ERROR:../app/core/gimpdrawablefilterundo.c:105:gimp_drawable_filter_undo_constructed: assertion failed: (GIMP_IS_DRAWABLE_FILTER (drawable_filter_undo->filter))
Thread 1 "gimp-2.99" received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:44
Download failed: Invalid argument. Continuing without source file ./nptl/./nptl/pthread_kill.c.
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt full
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:44
tid = <optimised out>
ret = 0
pd = 0x7ffff48fff40
old_mask = {__val = {2048, 140737324887168, 2064, 129, 95, 140737323354049, 140737324887264, 0, 7, 140737323200938, 347728885864, 2048, 93825121074688, 12091188097506416194, 143, 2096}}
ret = <optimised out>
#1 __pthread_kill_internal (signo=6, threadid=140737296465728) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=140737296465728, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff6242476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
ret = <optimised out>
#4 0x00007ffff62287f3 in __GI_abort () at ./stdlib/abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0xc2, sa_sigaction = 0xc2}, sa_mask = {__val = {194, 93825121381376, 140737347552567, 93825120042704, 140737488340976, 32, 93825119640320, 0, 734711333634947584, 80, 18446744073709550464, 0, 171, 140737488341072, 93825000840864, 93825000840864}}, sa_flags = -164998061, sa_restorer = 0x55555ced5b00}
sigs = {__val = {32, 140737324887168, 4294953040, 0, 93825000840864, 734711333634947584, 93825115886336, 18446744073709550464, 0, 140737488340968, 194, 1, 93825119640320, 140737323357267, 93825119640320, 140737347532135}}
#5 0x00007ffff795cb57 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6 0x00007ffff79b670f in g_assertion_message_expr () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00005555557d0a64 in gimp_drawable_filter_undo_constructed (object=0x55555cfe71e0) at ../app/core/gimpdrawablefilterundo.c:105
drawable_filter_undo = 0x55555cfe71e0
drawable = 0x7fffffffca70
filter_stack = 0x55555cedae20
__func__ = "gimp_drawable_filter_undo_constructed"
#8 0x00007ffff7a9d1df in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007ffff7a9e407 in g_object_new_with_properties () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#10 0x00005555557ade38 in gimp_image_undo_pushPython Exception <class 'gdb.error'>: No type named TypeNode.
(image=0x55555bfc3cc0, object_type=, undo_type=GIMP_UNDO_FILTER_REMOVE, name=0x555555e375e6 "Remove filter", dirty_mask=GIMP_DIRTY_DRAWABLE)
at ../app/core/gimpimage-undo.c:401
private = 0x55555bfc3a20
n_properties = 4
names = 0x55555d044400
values = 0x55555cb32ed0
args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffcc48, reg_save_area = 0x7fffffffcb70}}
undo = 0x555555e375e6
__func__ = "gimp_image_undo_push"
#11 0x00005555557a7b18 in gimp_image_undo_push_filter_remove
(image=0x55555bfc3cc0, undo_desc=0x555555e375e6 "Remove filter", drawable=0x55555d0863a0, filter=0x55555cef9c00) at ../app/core/gimpimage-undo-push.c:339
__func__ = "gimp_image_undo_push_filter_remove"
#12 0x0000555555b3971d in gimp_item_tree_view_effects_removed_clicked (widget=0x55555c493a40, view=0x55555c3d0640) at ../app/widgets/gimpitemtreeview.c:2801
filters = 0x55555bfbb440
image = 0x55555bfc3cc0
#13 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#14 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff693dab0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#18 0x00007ffff693d884 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff6bf0c15 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff6a07ffc in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#23 0x00007ffff7a91866 in g_cclosure_marshal_VOID__BOXEDv () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#24 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#25 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#26 0x00007ffff69ffacb in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#27 0x00007ffff6a0783b in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#28 0x00007ffff6a08443 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#29 0x00007ffff69cefa0 in gtk_event_controller_handle_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#30 0x00007ffff6ba0075 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#31 0x00007ffff6be6ee8 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#32 0x00007ffff7aaa700 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#33 0x00007ffff7aaa863 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#34 0x00007ffff6bae754 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#35 0x00007ffff6a516b0 in () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#36 0x00007ffff6a5255a in gtk_main_do_event () at /lib/x86_64-linux-gnu/libgtk-3.so.0
#37 0x00007ffff70bb743 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#38 0x00007ffff70f2f56 in () at /lib/x86_64-linux-gnu/libgdk-3.so.0
#39 0x00007ffff7993d3b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007ffff79e92b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007ffff79913e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007ffff76cefb5 in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#43 0x000055555599e62b in app_run
(full_prog_name=0x555555fe86d0 "/home/mark/Code/gimp-source/bin/gimp-2.99", filenames=0x0, alternate_system_gimprc=0x0, alternate_gimprc=0x0, session_name=0x0, batch_interpreter=0x0, batch_commands=0x0, quit=0, as_new=0, no_interface=0, no_data=0, no_fonts=0, no_splash=1, be_verbose=1, use_shm=1, use_cpu_accel=1, console_messages=1, use_debug_handler=0, show_playground=1, show_debug_menu=1, stack_trace_mode=GIMP_STACK_TRACE_QUERY, pdb_compat_mode=GIMP_PDB_COMPAT_WARN, backtrace_file=0x555555fdcd80 "/home/mark/.config/GIMP/2.99/CrashLog/gimp-crash-1716307040.txt") at ../app/app.c:317
gimp = 0x5555563900a0
app = 0x5555563ac0f0
default_folder = 0x0
gimpdir = 0x55555621aac0
abort_message = 0x0
retval = 0
__func__ = "app_run"
#44 0x00005555556b513f in main (argc=4, argv=0x555555fe89e0) at ../app/main.c:786
context = 0x555555fe8aa0
error = 0x0
abort_message = 0x0
basename = 0x555555fe8a10 "0\212\376UUU"
system_gimprc_file = 0x0
--Type <RET> for more, q to quit, c to continue without paging--
user_gimprc_file = 0x0
gimp_group = 0x555555fe9170
backtrace_file = 0x555555fdcd80 "/home/mark/.config/GIMP/2.99/CrashLog/gimp-crash-1716307040.txt"
retval = 0
i = 4