crash in geometry update on window close
@chpe
Submitted by Christian Persch Link to original bug (#789692)
Description
Found at https://bugzilla.redhat.com/show_bug.cgi?id=1463167 :
AFAICT, the window was closed when the 'confirm close' dialogue was affirmed, then destroying the window somehow updated the show-tabs notebook property which triggered a geometry update which crashed.
https://retrace.fedoraproject.org/faf/reports/1755033/ shows this with 3.24 and 3.26.
Thread 1 (Thread 0x7fe44b437a80 (LWP 13496)):
`#0` 0x00007fe4489882e2 in g_type_check_instance_cast (type_instance=type_instance@entry=0x55887f3bd470, iface_type=iface_type@entry=94044697123680) at gtype.c:4057
node = <optimized out>
iface = <optimized out>
is_instantiatable = <optimized out>
check = <optimized out>
`#1` 0x000055887b5f2fec in terminal_window_update_geometry (window=0x55887ce557e0 [TerminalWindow]) at terminal-window.c:3751
priv = 0x55887ce55470
widget = <optimized out>
hints = {min_width = 0, min_height = 0, max_width = 2093170736, max_height = 21896, base_width = 1, base_height = 0, width_inc = -1737054576, height_inc = 32765, min_aspect = 6.952845586777716e-310, max_aspect = 6.952845586777716e-310, win_gravity = 0}
padding = {left = 57, right = 0, top = 0, bottom = 0}
vbox_request = {width = 24, height = 0}
widget_request = {width = 0, height = 0}
grid_width = 0
grid_height = 0
char_width = 0
char_height = 0
chrome_width = <optimized out>
chrome_height = <optimized out>
csd_width = 0
csd_height = 0
`#5` 0x00007fe44897e2ef in <emit signal notify:show-tabs on instance 0x55887ce40e60 [TerminalNotebook]> (instance=instance@entry=0x55887ce40e60, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3447
n_param_values=2, param_values=0x7ffd9876a690, invocation_hint=0x7ffd9876a610) at
[...]
`#6` 0x00007fe448965b44 in g_object_dispatch_properties_changed (object=0x55887ce40e60 [TerminalNotebook], n_pspecs=<optimized out>, pspecs=<optimized out>) at gobject.c:1064
i = <optimized out>
`#7` 0x00007fe448968289 in g_object_notify_by_spec_internal (pspec=0x55887cc4d850 [GParamBoolean], object=0x55887ce40e60 [TerminalNotebook]) at gobject.c:1157
nqueue = <optimized out>
notify_pspec = 0x55887cc4d850 [GParamBoolean]
__func__ = "g_object_notify_by_pspec"
`#8` 0x00007fe448968289 in g_object_notify_by_pspec (object=0x55887ce40e60 [TerminalNotebook], pspec=0x55887cc4d850 [GParamBoolean]) at gobject.c:1267
__func__ = "g_object_notify_by_pspec"
`#9` 0x00007fe44a483d90 in gtk_notebook_set_show_tabs (notebook=<optimized out>, show_tabs=<optimized out>) at gtknotebook.c:6999
priv = <optimized out>
page = <optimized out>
children = <optimized out>
i = 2
__func__ = "gtk_notebook_set_show_tabs"
`#10` 0x000055887b5e18bb in terminal_notebook_page_removed (gtk_notebook=0x55887ce40e60 [TerminalNotebook], child=0x558880dcadf0 [TerminalScreenContainer], page_num=0) at terminal-notebook.c:335
notebook = 0x55887ce40e60 [TerminalNotebook]
page_removed = <optimized out>
[...]
`#15` 0x00007fe44a47fcec in gtk_notebook_remove (container=0x55887ce40e60 [TerminalNotebook], widget=0x558880dcadf0 [TerminalScreenContainer]) at gtknotebook.c:4238
notebook = 0x55887ce40e60 [TerminalNotebook]
priv = <optimized out>
page = <optimized out>
children = 0x55887f032e40 = {0x55887d2e9160}
list = <optimized out>
page_num = <optimized out>
[...]
`#19` 0x00007fe44897e2ef in g_signal_emit (instance=instance@entry=0x55887ce40e60, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffd9876b250, reg_save_area = 0x7ffd9876b190}}
`#20` 0x00007fe44a387716 in gtk_container_remove (container=0x55887ce40e60 [TerminalNotebook], widget=0x558880dcadf0 [TerminalScreenContainer]) at gtkcontainer.c:1905
__func__ = "gtk_container_remove"
`#21` 0x00007fe44a5a3ee4 in gtk_widget_dispose (object=0x558880dcadf0 [TerminalScreenContainer]) at gtkwidget.c:12059
widget = 0x558880dcadf0 [TerminalScreenContainer]
priv = 0x558880dcad00
sizegroups = <optimized out>
`#22` 0x00007fe448967f6c in g_object_run_dispose (object=0x558880dcadf0 [TerminalScreenContainer]) at gobject.c:1084
__func__ = "g_object_run_dispose"
`#23` 0x00007fe44a47a658 in gtk_notebook_forall (container=<optimized out>, include_internals=0, callback=0x7fe44a59b8a0 <gtk_widget_destroy>, callback_data=0x0) at gtknotebook.c:4578
page = 0x55887cea9a30
notebook = <optimized out>
priv = 0x55887ce40c60
children = 0x55887d4c6380 = {0x55887f5e89e0}
i = <optimized out>
`#24` 0x00007fe44a38923e in gtk_container_destroy (widget=0x55887ce40e60 [TerminalNotebook]) at gtkcontainer.c:1700
container = 0x55887ce40e60 [TerminalNotebook]
priv = 0x55887ce40d50
[...]
`#29` 0x00007fe44a5a3fc0 in gtk_widget_dispose (object=0x55887ce40e60 [TerminalNotebook]) at gtkwidget.c:12070
widget = 0x55887ce40e60 [TerminalNotebook]
priv = 0x55887ce40d70
sizegroups = <optimized out>
`#30` 0x00007fe448967f6c in g_object_run_dispose (object=0x55887ce40e60 [TerminalNotebook]) at gobject.c:1084
__func__ = "g_object_run_dispose"
`#31` 0x00007fe44a33e080 in gtk_box_forall (container=<optimized out>, include_internals=<optimized out>, callback=0x7fe44a59b8a0 <gtk_widget_destroy>, callback_data=0x0) at gtkbox.c:2687
box = <optimized out>
priv = 0x55887f961c90
child = <optimized out>
children = 0x0
`#32` 0x00007fe44a38923e in gtk_container_destroy (widget=0x55887f961dc0 [GtkBox]) at gtkcontainer.c:1700
container = 0x55887f961dc0 [GtkBox]
priv = 0x55887f961cb0
[...]
`#37` 0x00007fe44a5a3fc0 in gtk_widget_dispose (object=0x55887f961dc0 [GtkBox]) at gtkwidget.c:12070
widget = 0x55887f961dc0 [GtkBox]
priv = 0x55887f961cd0
sizegroups = <optimized out>
[...]
`#45` 0x00007fe44a5a3fc0 in gtk_widget_dispose (object=0x55887ce557e0 [TerminalWindow]) at gtkwidget.c:12070
widget = 0x55887ce557e0 [TerminalWindow]
priv = 0x55887ce556f0
sizegroups = <optimized out>
`#46` 0x00007fe44a5b7708 in gtk_window_dispose (object=0x55887ce557e0 [TerminalWindow]) at gtkwindow.c:3151
window = 0x55887ce557e0 [TerminalWindow]
priv = 0x55887ce55580
`#47` 0x00007fe44a3305ff in gtk_application_window_dispose (object=0x55887ce557e0 [TerminalWindow]) at gtkapplicationwindow.c:804
window = 0x55887ce557e0 [TerminalWindow]
`#48` 0x00007fe448967f6c in g_object_run_dispose (object=0x55887ce557e0 [TerminalWindow]) at gobject.c:1084
__func__ = "g_object_run_dispose"
`#55` 0x00007fe44897e2ef in <emit signal ??? on instance 0x55887e7b2950 [GtkMessageDialog] or 0x5588805a0dc0 [GtkButton]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffd9876c950, reg_save_area = 0x7ffd9876c890}}
[...]
`#56` 0x00007fe44a34bd6e in gtk_button_key_release (widget=<optimized out>, event=<optimized out>) at gtkbutton.c:1869
button = <optimized out>
priv = <optimized out>
[...]
`#63` 0x00007fe44a5bb50b in gtk_window_propagate_key_event (window=window@entry=0x55887e7b2950 [GtkMessageDialog], event=event@entry=0x5588805c5d30) at gtkwindow.c:7978
parent = <optimized out>
priv = <optimized out>
handled = 0
widget = 0x55887e7b2950 [GtkMessageDialog]
focus = 0x5588805a0dc0 [GtkButton]
__func__ = "gtk_window_propagate_key_event"
`#64` 0x00007fe44a5bb561 in gtk_window_key_release_event (widget=0x55887e7b2950 [GtkMessageDialog], event=0x5588805c5d30) at gtkwindow.c:8029
window = 0x55887e7b2950 [GtkMessageDialog]
handled = 0
[...]
Version: 3.26.x
Resolution: RESOLVED FIXED