Gfig Crashes When Using the "Select an Object" Tool
Environment/Versions
- GIMP version: 2.10.24
- Package: Windows installer from main downloads page on GIMP.org.
- Operating System: Windows 10
When using the Gfig filter, if I click on the "Select an Object" tool at any point in my workflow (i.e. before I draw an object, or after drawing one or multiple objects/shapes) the filter crashes. THe plugin then closes down and I receive two error messages (shown in the attached photos). When I re-open Gfig, it creates a new Gfig layer (even if I'm already on the original Gfig layer - in other words that original layer is no longer editable) and starts from a new session (i.e. the window is blank - no more shapes to edit, I have to start over). This happens 100% of the time I use this filter. Description of the bug
Reproduction
Is the bug reproducible? Always.
Reproduction steps:
- Open Gfig filter (Filters>Render>Gfig)
- Click on "Select an Object" icon/tool
- Filter crashes, error messages pop up
…
Expected result: tool allows me to select a shape.
Actual result: filter crashes.
Additional information
From Error Console:
GIMP Error Plug-in crashed: "gfig.exe" (C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins\gfig\gfig.exe)
The dying plug-in may have messed up GIMP's internal state. You may want to save your images and restart GIMP to be on the safe side.
GIMP Warning Plug-in 'Gfig' left image undo in inconsistent state, closing open undo groups.
Stacktrace from @schumaml:
Thread 1 "gfig" received signal SIGSEGV, Segmentation fault.
_gdk_x11_cursor_update_theme (cursor=0xb46063a0)
at ../../../../../gdk/x11/gdkcursor-x11.c:569
569 ../../../../../gdk/x11/gdkcursor-x11.c: No such file or directory.
(gdb) bt full
#0 _gdk_x11_cursor_update_theme (cursor=0xb46063a0)
at ../../../../../gdk/x11/gdkcursor-x11.c:569
Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x90:
xdisplay = #1 0xb773b454 in gdk_window_x11_set_cursor
(window=0x9f3598 [GdkWindow], cursor=0xb46063a0)
at ../../../../../gdk/x11/gdkwindow-x11.c:2798
private = 0x9f3598 [GdkWindow]
impl = 0xba4ec0 [GdkWindowImplX11]
cursor_private = 0xb46063a0
xcursor = <optimized out>
#2 0xb7711675 in update_cursor (display=display@entry=0x9e3090 [GdkDisplayX11])
at ../../../../gdk/gdkwindow.c:9604
cursor_window = 0xc460d8 [GdkWindow]
parent = <optimized out>
toplevel = 0x9f3598 [GdkWindow]
pointer_window = <optimized out>
impl_iface = <optimized out>
grab = <optimized out>
#3 0xb7713d1c in _gdk_display_set_window_under_pointer
(window=0xc460d8 [GdkWindow], display=0x9e3090 [GdkDisplayX11])
at ../../../../gdk/gdkwindow.c:10317
#4 _gdk_display_set_window_under_pointer
(display=0x9e3090 [GdkDisplayX11], window=0xc460d8 [GdkWindow])
at ../../../../gdk/gdkwindow.c:10302
#5 0xb77175d6 in proxy_pointer_event
(serial=5185, source_event=0xc4f5a0, display=0x9e3090 [GdkDisplayX11])
at ../../../../gdk/gdkwindow.c:10700
pointer_window = 0xc460d8 [GdkWindow]
state = 16
toplevel_x = 400
toplevel_window = <optimized out>
event_window = 0x9f3598 [GdkWindow]
event = <optimized out>
toplevel_y = 114
time_ = 165960287
non_linear = <optimized out>
event_window = <optimized out>
event_private = <optimized out>
x = 400
y = 114
unlink_event = 0
button_release_grab = <optimized out>
is_toplevel = <optimized out>
#6 _gdk_windowing_got_event (display=0x9e3090 [GdkDisplayX11], event_link=0xcde720 = {...}, event=0xc4f5a0, serial=5185) at ../../../../gdk/gdkwindow.c:11125
event_window = <optimized out>
event_private = <optimized out>
x = 400
y = 114
unlink_event = 0
button_release_grab = <optimized out>
is_toplevel = <optimized out>
#7 0xb772c4ab in _gdk_events_queue (display=0x9e3090 [GdkDisplayX11]) at ../../../../../gdk/x11/gdkevents-x11.c:2361
node = 0xcde720 = {0xc4f5a0}
event = 0xc4f5a0
xevent = {type = 6, xany = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387}, xkey = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, root = 604, subwindow = 0, time = 165960287, x = 400, y = 114, x_root = 690, y_root = 360, state = 16, keycode = 4294967040, same_screen = 1}, xbutton = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, root = 604, subwindow = 0, time = 165960287, x = 400, y = 114, x_root = 690, y_root = 360, state = 16, button = 4294967040, same_screen = 1}, xmotion = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, root = 604, subwindow = 0, time = 165960287, x = 400, y = 114, x_root = 690, y_root = 360, state = 16, is_hint = 0 '\000', same_screen = 1}, xcrossing = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, root = 604, subwindow = 0, time = 165960287, x = 400, y = 114, x_root = 690, y_root = 360, mode = 16, detail = -256, same_screen = 1, focus = -1, state = 4294967295}, xfocus = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, mode = 604, detail = 0}, xexpose = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, x = 604, y = 0, width = 165960287, height = 400, count = 114}, xgraphicsexpose = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, drawable = 88080387, x = 604, y = 0, width = 165960287, height = 400, count = 114, major_code = 690, minor_code = 360}, xnoexpose = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, drawable = 88080387, major_code = 604, minor_code = 0}, xvisibility = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, state = 604}, xcreatewindow = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, parent = 88080387, window = 604, x = 0, y = 165960287, width = 400, height = 114, border_width = 690, override_redirect = 360}, xdestroywindow = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604}, xunmap = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, from_configure = 0}, xmap = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, override_redirect = 0}, xmaprequest = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, parent = 88080387, window = 604}, xreparent = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, parent = 0, x = 165960287, y = 400, override_redirect = 114}, xconfigure = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, x = 0, y = 165960287, width = 400, height = 114, border_width = 690, above = 360, override_redirect = 16}, xgravity = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, x = 0, y = 165960287}, xresizerequest = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, width = 604, height = 0}, xconfigurerequest = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, parent = 88080387, window = 604, x = 0, y = 165960287, width = 400, height = 114, border_width = 690, above = 360, detail = 16, value_mask = 4294967040}, xcirculate = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, event = 88080387, window = 604, place = 0}, xcirculaterequest = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, parent = 88080387, window = 604, place = 0}, xproperty = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, atom = 604, time = 0, state = 165960287}, xselectionclear = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, selection = 604, time = 0}, xselectionrequest = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, owner = 88080387, requestor = 604, selection = 0, target = 165960287, property = 400, time = 114}, xselection = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, requestor = 88080387, selection = 604, target = 0, property = 165960287, time = 400}, xcolormap = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, colormap = 604, new = 0, state = 165960287}, xclient = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, message_type = 604, format = 0, data = {b = "_Z\344\t\220\001\000\000r\000\000\000\262\002\000\000h\001\000", s = {23135, 2532, 400, 0, 114, 0, 690, 0, 360, 0}, l = {165960287, 400, 114, 690, 360}}}, xmapping = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, request = 604, first_keycode = 0, count = 165960287}, xerror = {type = 6, display = 0x1441, resourceid = 0, serial = 10314128, error_code = 3 '\003', request_code = 0 '\000', minor_code = 64 '@'}, xkeymap = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, window = 88080387, key_vector = "\\\002\000\000\000\000\000\000_Z\344\t\220\001\000\000r\000\000\000\262\002\000\000h\001\000\000\020\000\000"}, xgeneric = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, extension = 88080387, evtype = 604}, xcookie = {type = 6, serial = 5185, send_event = 0, display = 0x9d6190, extension = 88080387, evtype = 604, cookie = 0, data = 0x9e45a5f}, pad = {6, 5185, 0, 10314128, 88080387, 604, 0, 165960287, 400, 114, 690, 360, 16, -256, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}
xdisplay = 0x9d6190
#8 0xb772c53e in gdk_event_dispatch (source=0x9f46e0, callback=0x0, user_data=0x0) at ../../../../../gdk/x11/gdkevents-x11.c:2419
display = 0x9e3090 [GdkDisplayX11]
event = <optimized out>
#9 0xb73f88cd in g_main_dispatch (context=0x9a8560) at ../../../glib/gmain.c:3325
dispatch = 0xb772c510 <gdk_event_dispatch>
prev_source = 0x0
begin_time_nsec = 0
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = <optimized out>
cb_data = <optimized out>
need_destroy = <optimized out>
source = 0x9f46e0
current = 0x9bd2e0
i = 0
__func__ = "g_main_dispatch"
#10 g_main_context_dispatch (context=0x9a8560) at ../../../glib/gmain.c:4043
#11 0xb73f8b69 in g_main_context_iterate (context=0x9a8560, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4119
max_priority = 0
timeout = 0
some_ready = 1
nfds = 4
allocated_nfds = <optimized out>
fds = <optimized out>
#12 0xb73f8ec1 in g_main_loop_run (loop=<optimized out>) at ../../../glib/gmain.c:4317
__func__ = "g_main_loop_run"
#13 0xb78beaf5 in IA__gtk_main () at ../../../../gtk/gtkmain.c:1270
tmp_list = 0x0
functions = 0x0
init = <optimized out>
loop = 0xbd7850
#14 0x00433a23 in gfig_dialog () at /home/schumaml/Development/source/gimp-2-10/plug-ins/gfig/gfig-dialog.c:534
main_hbox = 0xb3ddc0 [GtkHBox]
vbox = <optimized out>
gfig = 0xc1f840
parasite = <optimized out>
newlayer = <optimized out>
menubar = <optimized out>
toolbar = <optimized out>
combo = <optimized out>
frame = <optimized out>
img_width = <optimized out>
img_height = <optimized out>
img_type = <optimized out>
toggle = <optimized out>
right_vbox = <optimized out>
hbox = <optimized out>
ui_manager = <optimized out>
empty_label = <optimized out>
path = <optimized out>
#15 0x0042d4fd in run (name=0x9c1cd0 "plug-in-gfig", nparams=3, param=0x9c8380, nreturn_vals=0xbfe8ede4, return_vals=0xbfe8ede0) at /home/schumaml/Development/source/gimp-2-10/plug-ins/gfig/gfig.c:220
values = {{type = GIMP_PDB_STATUS, data = {d_int32 = 3, d_int16 = 3, d_int8 = 3 '\003', d_float = 1.4821969375237396e-323, d_string = 0x3 <error: Cannot access memory at address 0x3>, d_int32array = 0x3, d_int16array = 0x3, d_int8array = 0x3 <error: Cannot access memory at address 0x3>, d_floatarray = 0x3, d_stringarray = 0x3, d_colorarray = 0x3, d_color = {r = 1.4821969375237396e-323, g = 0, b = 0, a = 0}, d_region = {x = 3, y = 0, width = 0, height = 0}, d_display = 3, d_image = 3, d_item = 3, d_layer = 3, d_layer_mask = 3, d_channel = 3, d_drawable = 3, d_selection = 3, d_boundary = 3, d_path = 3, d_vectors = 3, d_unit = 3, d_parasite = {name = 0x3 <error: Cannot access memory at address 0x3>, flags = 0, size = 0, data = 0x0}, d_tattoo = 3, d_status = GIMP_PDB_SUCCESS}}}
drawable_id = <optimized out>
run_mode = <optimized out>
status = GIMP_PDB_SUCCESS
pwidth = <optimized out>
pheight = <optimized out>
#16 0xb7d066db in gimp_proc_run (proc_run=<optimized out>) at /home/schumaml/Development/source/gimp-2-10/libgimp/gimp.c:2453
proc_return = {name = 0xb7d223a0 <_gimp_unit_cache_get_number_of_units> "\351\033v\377\377\215\264&", nparams = 3084010232, params = 0xb7d24304}
return_vals = 0x451b20 <values>
n_return_vals = 1
msg = {type = 5, data = 0x9c3450}
basename = <optimized out>
env_string = <optimized out>
debug_string = <optimized out>
__func__ = "gimp_main"
#17 gimp_loop () at /home/schumaml/Development/source/gimp-2-10/libgimp/gimp.c:2265
msg = {type = 5, data = 0x9c3450}
basename = <optimized out>
env_string = <optimized out>
debug_string = <optimized out>
__func__ = "gimp_main"
#18 gimp_main (info=0x450e30 <PLUG_IN_INFO>, argc=6, argv=0xbfe8ef24) at /home/schumaml/Development/source/gimp-2-10/libgimp/gimp.c:671
basename = <optimized out>
env_string = <optimized out>
debug_string = <optimized out>
__func__ = "gimp_main"
#19 0x0042d19e in main (argc=6, argv=0xbfe8ef24) at /home/schumaml/Development/source/gimp-2-10/plug-ins/gfig/gfig.c:107
Edited by Bruno