Hello, just tried to reproduce this issue.
This is the stack were the process crashes: Thread 1 "gmic_gimp" received signal SIGSEGV, Segmentation fault. __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 120 ../sysdeps/x86_64/multiarch/../strlen.S: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 #1 0x00007f8ef92449b6 in printf_positional (s=s@entry=0x7ffdde9629c0, format=format@entry=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", readonly_format=readonly_format@entry=0, ap=ap@entry=0x7ffdde962b30, ap_savep=ap_savep@entry=0x7ffdde962568, done=done@entry=5, nspecs_done=0, lead_str_end=<optimized out>, work_buffer=<optimized out>, save_errno=<optimized out>, grouping=<optimized out>, thousands_sep=<optimized out>) at vfprintf.c:2023 #2 0x00007f8ef9246db2 in _IO_vfprintf_internal (s=s@entry=0x7ffdde9629c0, format=format@entry=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", ap=ap@entry=0x7ffdde962b30) at vfprintf.c:1688 #3 0x00007f8ef926ea60 in _IO_vsnprintf (string=0x5559266914f0 "mode(U", maxlen=<optimized out>, format=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", args=args@entry=0x7ffdde962b30) at vsnprintf.c:114 #4 0x00007f8ef924e02f in __GI___snprintf (s=<optimized out>, maxlen=<optimized out>, format=<optimized out>) at snprintf.c:33 #5 0x00005559254a5077 in process_preview () at gmic_gimp.cpp:3259 #6 0x00007f8efaba1f6d in g_closure_invoke (closure=0x555926a0cac0, return_value=0x0, n_param_values=1, param_values=0x7ffdde963330, invocation_hint=0x7ffdde9632b0) at ../../../../gobject/gclosure.c:804 #7 0x00007f8efabb4d3e in signal_emit_unlocked_R (node=node@entry=0x555926912a40, detail=detail@entry=0, instance=instance@entry=0x555926783e80, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffdde963330) at ../../../../gobject/gsignal.c:3635 #8 0x00007f8efabbd3f5 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffdde9634f0) at ../../../../gobject/gsignal.c:3391 #9 0x00007f8efabbde0f in g_signal_emit (instance=instance@entry=0x555926783e80, signal_id=<optimized out>, detail=detail@entry=0) at ../../../../gobject/gsignal.c:3447 #10 0x00007f8efd31db8f in gimp_preview_invalidate_now (preview=0x555926783e80, preview@entry=<error reading variable: value has been optimized out>) at gimppreview.c:503 #11 0x00007f8efa8c8b73 in g_timeout_dispatch (source=source@entry=0x5559268628b0, callback=<optimized out>, user_data=<optimized out>) at ../../../../glib/gmain.c:4650 #12 0x00007f8efa8c80f5 in g_main_dispatch (context=0x55592653e460) at ../../../../glib/gmain.c:3177 #13 g_main_context_dispatch (context=context@entry=0x55592653e460) at ../../../../glib/gmain.c:3830 #14 0x00007f8efa8c84c0 in g_main_context_iterate (context=0x55592653e460, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../../glib/gmain.c:3903 #15 0x00007f8efa8c87d2 in g_main_loop_run (loop=0x5559266f9ce0) at ../../../../glib/gmain.c:4099 #16 0x00007f8efb7a3987 in IA__gtk_main () at ./gtk/gtkmain.c:1270 #17 0x00005559254a9171 in gmic_main () at gmic_gimp.cpp:4336 #18 0x00005559254af6d7 in gmic_run (name=<optimized out>, nparams=<optimized out>, param=<optimized out>, nreturn_vals=<optimized out>, return_vals=<optimized out>) at gmic_gimp.cpp:4425 #19 0x00007f8efce93418 in gimp_proc_run (proc_run=0x55592652e740) at gimp.c:2401 #20 gimp_loop () at gimp.c:2227 #21 gimp_main (info=<optimized out>, argc=<optimized out>, argv=<optimized out>) at gimp.c:671 #22 0x00007f8ef9219b17 in __libc_start_main (main=0x5559254920a0 <main(int, char**)>, argc=6, argv=0x7ffdde963b38, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffdde963b28) at ../csu/libc-start.c:310 #23 0x000055592549238a in _start () (gdb) list ... 3192 void process_preview() { ... 3249 const GimpLayerModeEffects blendmode = gimp_layer_get_mode(*layers); ... 3259 cimg_snprintf(layer_name,layer_name.width(),"mode(%s),opacity(%g),pos(%d,%d),name(%s)", 3260 s_blendmode[blendmode],opacity,ox,oy, 3261 _layer_name.data()); (gdb) list gimp_layer_get_mode 1106 GimpLayerMode 1107 gimp_layer_get_mode (gint32 layer_ID) 1108 { 1109 GimpParam *return_vals; 1110 gint nreturn_vals; 1111 GimpLayerMode mode = 0; 1112 1113 return_vals = gimp_run_procedure ("gimp-layer-get-mode", 1114 &nreturn_vals, 1115 GIMP_PDB_LAYER, layer_ID, 1116 GIMP_PDB_END); 1117 1118 if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS) 1119 mode = return_vals[1].data.d_int32; 1120 1121 gimp_destroy_params (return_vals, nreturn_vals); 1122 1123 return mode; 1124 } Variable s_blendmode contains 0x17 strings like "alpha", "dissolve", "behind"... Variable blendmode is retrieved by gimp_layer_get_mode and looks like it has a value of GIMP_LAYER_MODE_NORMAL == 0x1c. Therefore memory after s_blendmode is accessed. It looks like gimp-gmic and libgimp2.0 disagree on the layer mode constants. Possibly gimp-gmic expects GIMP_LAYER_MODE_NORMAL_LEGACY. libgimp2.0 returns GIMP_LAYER_MODE_NORMAL. Kind regards, Bernhard
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906658 https://sourceforge.net/projects/gmic/support https://gmic.eu/download.shtml https://framagit.org/dtschump/gmic/issues apt update apt install xserver-xorg sddm openbox xterm psmisc systemd-coredump dpkg-dev devscripts gdb gimp gimp-gmic gimp-gmic-dbgsym libglib2.0-0-dbgsym libgimp2.0-dbgsym libgtk2.0-0-dbgsym apt build-dep gimp-gmic mkdir -p gimp-gmic/orig cd gimp-gmic/orig apt source gimp-gmic cd mkdir -p libgimp-2.0/orig cd libgimp-2.0/orig apt source libgimp2.0 cd export DISPLAY=:0 gimp /usr/share/desktop-base/lines-theme/login/sddm-preview.jpg # open G'MIC filters dialog gdb -q --pid $(pgrep gmic_gimp) set height 0 set width 0 set pagination off directory /home/benutzer/gimp-gmic/orig/gmic-1.7.9+zart/src directory /home/benutzer/libgimp-2.0/orig/gimp-2.10.2/libgimp b process_preview b gmic_gimp.cpp:3249 display mode cont Thread 1 "gmic_gimp" received signal SIGSEGV, Segmentation fault. __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 120 ../sysdeps/x86_64/multiarch/../strlen.S: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 #1 0x00007f7b3ba029b6 in printf_positional (s=s@entry=0x7ffe4f2a6960, format=format@entry=0x562857458438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", readonly_format=readonly_format@entry=0, ap=ap@entry=0x7ffe4f2a6ad0, ap_savep=ap_savep@entry=0x7ffe4f2a6508, done=done@entry=5, nspecs_done=0, lead_str_end=<optimized out>, work_buffer=<optimized out>, save_errno=<optimized out>, grouping=<optimized out>, thousands_sep=<optimized out>) at vfprintf.c:2023 #2 0x00007f7b3ba04db2 in _IO_vfprintf_internal (s=s@entry=0x7ffe4f2a6960, format=format@entry=0x562857458438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", ap=ap@entry=0x7ffe4f2a6ad0) at vfprintf.c:1688 #3 0x00007f7b3ba2ca60 in _IO_vsnprintf (string=0x56285849eef0 "mode(V", maxlen=<optimized out>, format=0x562857458438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", args=args@entry=0x7ffe4f2a6ad0) at vsnprintf.c:114 #4 0x00007f7b3ba0c02f in __GI___snprintf (s=<optimized out>, maxlen=<optimized out>, format=<optimized out>) at snprintf.c:33 #5 0x0000562856f72077 in process_preview() () #6 0x00007f7b3d35ff6d in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #7 0x00007f7b3d372d3e in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #8 0x00007f7b3d37b3f5 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #9 0x00007f7b3d37be0f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #10 0x00007f7b3fadbb8f in ?? () from /usr/lib/libgimpwidgets-2.0.so.0 #11 0x00007f7b3d086b73 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #12 0x00007f7b3d0860f5 in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #13 0x00007f7b3d0864c0 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #14 0x00007f7b3d0867d2 in g_main_loop_run () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #15 0x00007f7b3df61987 in gtk_main () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #16 0x0000562856f76171 in gmic_main() () #17 0x0000562856f7c6d7 in gmic_run(char const*, int, _GimpParam const*, int*, _GimpParam**) () #18 0x00007f7b3f651418 in gimp_main () from /usr/lib/libgimp-2.0.so.0 #19 0x00007f7b3b9d7b17 in __libc_start_main (main=0x562856f5f0a0 <main>, argc=6, argv=0x7ffe4f2a7ad8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe4f2a7ac8) at ../csu/libc-start.c:310 #20 0x0000562856f5f38a in _start () # With debug symbols Thread 1 "gmic_gimp" received signal SIGSEGV, Segmentation fault. __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 120 ../sysdeps/x86_64/multiarch/../strlen.S: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120 #1 0x00007f8ef92449b6 in printf_positional (s=s@entry=0x7ffdde9629c0, format=format@entry=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", readonly_format=readonly_format@entry=0, ap=ap@entry=0x7ffdde962b30, ap_savep=ap_savep@entry=0x7ffdde962568, done=done@entry=5, nspecs_done=0, lead_str_end=<optimized out>, work_buffer=<optimized out>, save_errno=<optimized out>, grouping=<optimized out>, thousands_sep=<optimized out>) at vfprintf.c:2023 #2 0x00007f8ef9246db2 in _IO_vfprintf_internal (s=s@entry=0x7ffdde9629c0, format=format@entry=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", ap=ap@entry=0x7ffdde962b30) at vfprintf.c:1688 #3 0x00007f8ef926ea60 in _IO_vsnprintf (string=0x5559266914f0 "mode(U", maxlen=<optimized out>, format=0x55592598b438 "mode(%s),opacity(%g),pos(%d,%d),name(%s)", args=args@entry=0x7ffdde962b30) at vsnprintf.c:114 #4 0x00007f8ef924e02f in __GI___snprintf (s=<optimized out>, maxlen=<optimized out>, format=<optimized out>) at snprintf.c:33 #5 0x00005559254a5077 in process_preview () at gmic_gimp.cpp:3259 #6 0x00007f8efaba1f6d in g_closure_invoke (closure=0x555926a0cac0, return_value=0x0, n_param_values=1, param_values=0x7ffdde963330, invocation_hint=0x7ffdde9632b0) at ../../../../gobject/gclosure.c:804 #7 0x00007f8efabb4d3e in signal_emit_unlocked_R (node=node@entry=0x555926912a40, detail=detail@entry=0, instance=instance@entry=0x555926783e80, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffdde963330) at ../../../../gobject/gsignal.c:3635 #8 0x00007f8efabbd3f5 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffdde9634f0) at ../../../../gobject/gsignal.c:3391 #9 0x00007f8efabbde0f in g_signal_emit (instance=instance@entry=0x555926783e80, signal_id=<optimized out>, detail=detail@entry=0) at ../../../../gobject/gsignal.c:3447 #10 0x00007f8efd31db8f in gimp_preview_invalidate_now (preview=0x555926783e80, preview@entry=<error reading variable: value has been optimized out>) at gimppreview.c:503 #11 0x00007f8efa8c8b73 in g_timeout_dispatch (source=source@entry=0x5559268628b0, callback=<optimized out>, user_data=<optimized out>) at ../../../../glib/gmain.c:4650 #12 0x00007f8efa8c80f5 in g_main_dispatch (context=0x55592653e460) at ../../../../glib/gmain.c:3177 #13 g_main_context_dispatch (context=context@entry=0x55592653e460) at ../../../../glib/gmain.c:3830 #14 0x00007f8efa8c84c0 in g_main_context_iterate (context=0x55592653e460, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../../glib/gmain.c:3903 #15 0x00007f8efa8c87d2 in g_main_loop_run (loop=0x5559266f9ce0) at ../../../../glib/gmain.c:4099 #16 0x00007f8efb7a3987 in IA__gtk_main () at ./gtk/gtkmain.c:1270 #17 0x00005559254a9171 in gmic_main () at gmic_gimp.cpp:4336 #18 0x00005559254af6d7 in gmic_run (name=<optimized out>, nparams=<optimized out>, param=<optimized out>, nreturn_vals=<optimized out>, return_vals=<optimized out>) at gmic_gimp.cpp:4425 #19 0x00007f8efce93418 in gimp_proc_run (proc_run=0x55592652e740) at gimp.c:2401 #20 gimp_loop () at gimp.c:2227 #21 gimp_main (info=<optimized out>, argc=<optimized out>, argv=<optimized out>) at gimp.c:671 #22 0x00007f8ef9219b17 in __libc_start_main (main=0x5559254920a0 <main(int, char**)>, argc=6, argv=0x7ffdde963b38, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffdde963b28) at ../csu/libc-start.c:310 #23 0x000055592549238a in _start () (gdb) list ... 3192 void process_preview() { ... 3249 const GimpLayerModeEffects blendmode = gimp_layer_get_mode(*layers); ... 3259 cimg_snprintf(layer_name,layer_name.width(),"mode(%s),opacity(%g),pos(%d,%d),name(%s)", 3260 s_blendmode[blendmode],opacity,ox,oy, 3261 _layer_name.data()); (gdb) list gimp_layer_get_mode 1106 GimpLayerMode 1107 gimp_layer_get_mode (gint32 layer_ID) 1108 { 1109 GimpParam *return_vals; 1110 gint nreturn_vals; 1111 GimpLayerMode mode = 0; 1112 1113 return_vals = gimp_run_procedure ("gimp-layer-get-mode", 1114 &nreturn_vals, 1115 GIMP_PDB_LAYER, layer_ID, 1116 GIMP_PDB_END); 1117 1118 if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS) 1119 mode = return_vals[1].data.d_int32; 1120 1121 gimp_destroy_params (return_vals, nreturn_vals); 1122 1123 return mode; 1124 } (gdb) print blendmode $2 = <optimized out> (gdb) print s_blendmode $3 = {0x55592597282e "alpha", 0x555925972834 "dissolve", 0x555925974e64 "behind", 0x555925972852 "multiply", 0x5559259f370a "screen", 0x555925972860 "overlay", 0x55592597287c "difference", 0x555925974b28 "add", 0x555925972887 "subtract", 0x55592597284b "darken", 0x55592597283d "lighten", 0x5559259728af "hue", 0x5559259728b3 "saturation", 0x5559259728be "color", 0x5559259728c4 "value", 0x5559259728a8 "divide", 0x555925972845 "dodge", 0x55592597285b "burn", 0x555925972872 "hardlight", 0x555925972868 "softlight", 0x555925972890 "grainextract", 0x55592597289d "grainmerge", 0x555925974e6b "colorerase"} (gdb) print opacity $4 = 100 (gdb) print *layers $5 = 2 # Restarted and stop here: (gdb) down #0 gimp_layer_get_mode (layer_ID=2) at gimplayer_pdb.c:1108 (gdb) print mode $5 = GIMP_LAYER_MODE_NORMAL (gdb) print/x mode $6 = 0x1c (gdb) print s_blendmode $7 = {0x556961e8c82e "alpha", 0x556961e8c834 "dissolve", 0x556961e8ee64 "behind", 0x556961e8c852 "multiply", 0x556961f0d70a "screen", 0x556961e8c860 "overlay", 0x556961e8c87c "difference", 0x556961e8eb28 "add", 0x556961e8c887 "subtract", 0x556961e8c84b "darken", 0x556961e8c83d "lighten", 0x556961e8c8af "hue", 0x556961e8c8b3 "saturation", 0x556961e8c8be "color", 0x556961e8c8c4 "value", 0x556961e8c8a8 "divide", 0x556961e8c845 "dodge", 0x556961e8c85b "burn", 0x556961e8c872 "hardlight", 0x556961e8c868 "softlight", 0x556961e8c890 "grainextract", 0x556961e8c89d "grainmerge", 0x556961e8ee6b "colorerase"} (gdb) print s_blendmode[0x1c] $8 = 0x8000000080000000 <error: Cannot access memory at address 0x8000000080000000> (gdb) print sizeof(s_blendmode)/sizeof(*s_blendmode) $9 = 23 (gdb) print/x sizeof(s_blendmode)/sizeof(*s_blendmode) $10 = 0x17