Bug#1040049: gnome-terminal: assert hit on mouseover, all open terminal windows are lost

Luca Boccassi bluca at debian.org
Mon Jul 3 22:14:42 BST 2023


On Mon, 3 Jul 2023 at 22:04, Simon McVittie <smcv at debian.org> wrote:
>
> On Mon, 03 Jul 2023 at 16:12:11 +0100, Luca Boccassi wrote:
> > On Mon, 3 Jul 2023 at 16:08, Simon McVittie <smcv at debian.org> wrote:
> > > I normally use gnome-console (kgx) myself, and I wasn't able to reproduce
> > > this in some brief testing with gnome-terminal; I also didn't see
> > > this when testing the 0.70.6-1~deb12u1 update on a bookworm system.
> > > Are there any special steps to trigger this assertion failure?
> >
> > Bookworm with p-u. I cannot reproduce reliably, it happens randomly
> > when using the mouse scroll wheel inside gnome-terminal. Do you need
> > the core file?
>
> A backtrace to the bug would be ideal; a full core dump file probably
> gives us a limited amount of extra info compared with a backtrace,
> and is more likely to contain something confidential. If you can find
> a way to repro the issue somewhat reliably then it would also be useful
> to know whether it's the same backtrace every time.
>
> If you can try rolling back to bookworm without p-u for this package and
> try to reproduce it, that would also be very useful: if we need to revert
> a change before 12.1, then there is going to be quite a tight deadline
> for that.

Here's the full backtrace, if I manage to repro with the non-p-u
version I'll reply back:

#0  __pthread_kill_implementation (threadid=<optimized out>,
signo=signo at entry=6, no_tid=no_tid at entry=0)
    at ./nptl/pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {140075865543808}}
        ret = <optimized out>
#1  0x00007f65f32a9d2f in __pthread_kill_internal (signo=6,
threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007f65f325aef2 in __GI_raise (sig=sig at entry=6) at
../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007f65f3245472 in __GI_abort () at ./stdlib/abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction
= 0x20}, sa_mask = {__val = {93865595894560, 140734737393720,
140075864777479, 93862215286832, 140733193388032, 93865597004128, 0,
206158430248, 9061015767978157056, 140075865037995,
18446744073709551360, 11, 140075865546368, 140075853536075,
140734737393824, 0}}, sa_flags = -215253713, sa_restorer =
0x7f65f37d84d0}
#4  0x00007f65f4238ec8 in g_assertion_message
    (domain=domain at entry=0x7f65f37d84d0 "VTE",
file=file at entry=0x7f65f37ddb4b "../src/ringview.cc",
line=line at entry=299, func=func at entry=0x7f65f37ddc50 "const
vte::base::BidiRow* vte::base::RingView::get_bidirow(vte::grid::row_t)
const", message=message at entry=0x555ec9412d40 "assertion failed (row <
m_start + m_len): (23079 < 23079)")
    at ../../../glib/gtestutils.c:3256
        lstr = "299\000\000\000\000\000\001\000\000\000\000\000\000\000@\250\a\\\377\177\000\000\000\000\000\000e\177\000"
        s = 0x555ec990e960 "\216\213\273\234[U"
#5  0x00007f65f42991a1 in g_assertion_message_cmpnum
    (domain=0x7f65f37d84d0 "VTE", file=0x7f65f37ddb4b
"../src/ringview.cc", line=299, func=0x7f65f37ddc50 "const
vte::base::BidiRow* vte::base::RingView::get_bidirow(vte::grid::row_t)
const", expr=<optimized out>, arg1=23079, cmp=<optimized out>,
arg2=23079, numtype=105 'i') at ../../../glib/gtestutils.c:3315
        s = 0x555ec9412d40 "assertion failed (row < m_start + m_len):
(23079 < 23079)"
#6  0x00007f65f3799615 in vte::base::RingView::get_bidirow(long) const
(this=this at entry=0x555ec811f928, row=23079)
    at ../src/ringview.cc:299
        __n1 = 23079
        __n2 = <optimized out>
        __PRETTY_FUNCTION__ = "const vte::base::BidiRow*
vte::base::RingView::get_bidirow(vte::grid::row_t) const"
#7  0x00007f65f379da59 in
vte::terminal::Terminal::grid_coords_from_view_coords(vte::view::coords
const&) const
    (this=this at entry=0x555ec811c520, pos=...) at ../src/vte.cc:1607
        col = 52
        row = 23079
        bidirow = <optimized out>
#8  0x00007f65f379dfe8 in
vte::terminal::Terminal::grid_coords_from_event(vte::platform::MouseEvent
const&) const
    (event=<optimized out>, this=0x555ec811c520) at ../src/vte.cc:1563
        rowcol = {<std::pair<long, long>> = {first = <optimized out>,
second = <optimized out>}, <No data fields>}
#9  vte::terminal::Terminal::rowcol_from_event(vte::platform::MouseEvent
const&, long*, long*)
    (this=this at entry=0x555ec811c520, event=<optimized out>,
column=column at entry=0x7fff5c07aa78, row=row at entry=0x7fff5c07aa80) at
../src/vte.cc:1785
        rowcol = {<std::pair<long, long>> = {first = <optimized out>,
second = <optimized out>}, <No data fields>}
#10 0x00007f65f37a86c3 in
vte::terminal::Terminal::hyperlink_check(vte::platform::MouseEvent
const&)
    (this=this at entry=0x555ec811c520, event=...) at ../src/vte.cc:1837
        col = 140075459440672
        row = 93865571894560
#11 0x00007f65f37b88c1 in vte::platform::Widget::hyperlink_check(_GdkEvent*)
    (event=0x7f65dc007020, this=<optimized out>) at ../src/widget.hh:475
        __PRETTY_FUNCTION__ = "char*
vte_terminal_hyperlink_check_event(VteTerminal*, GdkEvent*)"
#12 vte_terminal_hyperlink_check_event(VteTerminal*, GdkEvent*)
(terminal=<optimized out>, event=0x7f65dc007020)
    at ../src/vtegtk.cc:2957
        __PRETTY_FUNCTION__ = "char*
vte_terminal_hyperlink_check_event(VteTerminal*, GdkEvent*)"
#13 0x0000555ec61d12a5 in  ()
#18 0x00007f65f4382dbf in <emit signal ??? on instance 0x555ec7c96cc0
[TerminalScreen]>
    (instance=instance at entry=0x555ec7c96cc0, signal_id=<optimized
out>, detail=detail at entry=0)
    at ../../../gobject/gsignal.c:3606
        var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area
= 0x7fff5c07afc0, reg_save_area = 0x7fff5c07af00}}
    #14 0x00007f65f3890bc7 in _gtk_marshal_BOOLEAN__BOXED
    (closure=0x555ec797e350, return_value=0x7fff5c07ace0,
n_param_values=<optimized out>, param_values=0x7fff5c07ad40,
invocation_hint=<optimized out>, marshal_data=<optimized out>) at
gtk/gtkmarshalers.c:84
                cc = 0x555ec797e350
                data1 = 0x555ec7c96cc0
                data2 = <optimized out>
                callback = 0x555ec61d1210
                v_return = <optimized out>
                __func__ = "_gtk_marshal_BOOLEAN__BOXED"
    #15 0x00007f65f43693b0 in g_closure_invoke
    (closure=closure at entry=0x555ec797e350,
return_value=return_value at entry=0x7fff5c07ace0, n_param_values=2,
param_values=param_values at entry=0x7fff5c07ad40,
invocation_hint=invocation_hint at entry=0x7fff5c07acc0)
    at ../../../gobject/gclosure.c:832
                marshal = 0x7f65f4367ca0 <g_type_class_meta_marshal>
                marshal_data = 0x180
                in_marshal = 0
                real_closure = 0x555ec797e330
                __func__ = "g_closure_invoke"
    #16 0x00007f65f437c1a5 in signal_emit_unlocked_R
    (node=<optimized out>, detail=detail at entry=0,
instance=instance at entry=0x555ec7c96cc0,
emission_return=emission_return at entry=0x7fff5c07ae30,
instance_and_params=instance_and_params at entry=0x7fff5c07ad40)
    at ../../../gobject/gsignal.c:3835
                accumulator = 0x555ec797e410
                emission = {next = 0x0, instance = 0x555ec7c96cc0,
ihint = {signal_id = 60, detail = 0, run_type = G_S--Type <RET> for
more, q to quit, c to continue without paging--c
IGNAL_RUN_LAST}, state = EMISSION_RUN, chain_type = 0x555ec7ca2530
[TerminalScreen/VteTerminal/GtkWidget/GInitiallyUnowned]}
                class_closure = 0x555ec797e350
                hlist = <optimized out>
                handler_list = 0x555ec8184180
                return_accu = 0x7fff5c07ace0
                accu = {g_type = 0x14 [gboolean], data = {{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}, {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}}}
                signal_id = 60
                max_sequential_handler_number = 155936
                return_value_altered = <optimized out>
    #17 0x00007f65f438242d in g_signal_emit_valist
    (instance=<optimized out>, signal_id=<optimized out>,
detail=<optimized out>, var_args=var_args at entry=0x7fff5c07aee0) at
../../../gobject/gsignal.c:3559
                return_value = {g_type = 0x14 [gboolean], data =
{{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}, {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}}}
                error = 0x0
                rtype = 0x14 [gboolean]
                static_scope = 0
                instance_and_params = 0x7fff5c07ad40
                signal_return_type = <optimized out>
                param_values = 0x7fff5c07ad58
                node = <optimized out>
                i = <optimized out>
                n_params = <optimized out>
                __func__ = "g_signal_emit_valist"
#19 0x00007f65f3b697d4 in gtk_widget_event_internal
    (widget=widget at entry=0x555ec7c96cc0 [TerminalScreen],
event=event at entry=0x7f65dc007020)
    at ../../../gtk/gtkwidget.c:7812
        signal_num = <optimized out>
        return_val = <optimized out>
        handled = 0
        __func__ = "gtk_widget_event_internal"
#20 0x00007f65f3b6c411 in gtk_widget_event_internal
(event=0x7f65dc007020, widget=0x555ec7c96cc0 [TerminalScreen])
    at ../../../gtk/gtkwidget.c:7383
        return_val = 0
        __func__ = "gtk_widget_event_internal"
        __func__ = "gtk_widget_event"
#21 0x00007f65f3a077de in propagate_event_up
    (topmost=<optimized out>, event=<optimized out>,
widget=0x555ec7c96cc0 [TerminalScreen])
    at ../../../gtk/gtkmain.c:2598
        tmp = <optimized out>
        handled_event = <optimized out>
        handled_event = 0
#22 propagate_event
    (widget=widget at entry=0x555ec7c96cc0 [TerminalScreen],
event=event at entry=0x7f65dc007020, captured=captured at entry=0,
topmost=topmost at entry=0x0) at ../../../gtk/gtkmain.c:2701
        handled_event = 0
#23 0x00007f65f3a08b1c in gtk_propagate_event
    (widget=widget at entry=0x555ec7c96cc0 [TerminalScreen],
event=event at entry=0x7f65dc007020)
    at ../../../gtk/gtkmain.c:2735
        __func__ = "gtk_propagate_event"
#24 0x00007f65f3a09296 in gtk_main_do_event (event=0x7f65dc007020) at
../../../gtk/gtkmain.c:1921
        grab_widget = 0x555ec7c96cc0 [TerminalScreen]
        window_group = 0x555ec7d1e870 [GtkWindowGroup]
        rewritten_event = <optimized out>
        device = 0x555ec7965800 [GdkX11DeviceXI2]
        tmp_list = <optimized out>
        event_widget = 0x555ec7c96cc0 [TerminalScreen]
        topmost_widget = <optimized out>
        __func__ = "gtk_main_do_event"
        __func__ = "gtk_main_do_event"
#25 gtk_main_do_event (event=<optimized out>) at ../../../gtk/gtkmain.c:1691
        __func__ = "gtk_main_do_event"
#26 0x00007f65f414d815 in _gdk_event_emit
(event=event at entry=0x7f65dc007020) at ../../../gdk/gdkevents.c:73
#27 0x00007f65f41a7702 in gdk_event_source_dispatch
    (source=<optimized out>, callback=<optimized out>,
user_data=<optimized out>)
    at ../../../gdk/x11/gdkeventsource.c:367
        display = <optimized out>
        event = 0x7f65dc007020
#28 0x00007f65f426f7a9 in g_main_dispatch (context=0x555ec7961f40) at
../../../glib/gmain.c:3454
        dispatch = 0x7f65f41a76e0 <gdk_event_source_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 = 0x555ec7961e50
        current = 0x555ec79dd8a0
        i = 0
        __func__ = "g_main_dispatch"
#29 g_main_context_dispatch (context=context at entry=0x555ec7961f40) at
../../../glib/gmain.c:4172
#30 0x00007f65f426fa38 in g_main_context_iterate
    (context=context at entry=0x555ec7961f40, block=block at entry=1,
dispatch=dispatch at entry=1, self=<optimized out>)
    at ../../../glib/gmain.c:4248
        max_priority = 2147483647
        timeout = 18
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 17
        fds = 0x555ec82f3640
#31 0x00007f65f426facc in g_main_context_iteration
    (context=context at entry=0x555ec7961f40,
may_block=may_block at entry=1) at ../../../glib/gmain.c:4313
        retval = <optimized out>
#32 0x00007f65f448f65d in g_application_run
    (application=0x555ec7c0a110 [TerminalApp], argc=<optimized out>,
argv=<optimized out>)
    at ../../../gio/gapplication.c:2573
        arguments = 0x555ec7a6c180
        status = 0
        context = 0x555ec7961f40
        acquired_context = <optimized out>
        __func__ = "g_application_run"
#33 0x0000555ec61b5906 in  ()
#34 0x00007f65f324618a in __libc_start_call_main
    (main=main at entry=0x555ec61b5760, argc=argc at entry=1,
argv=argv at entry=0x7fff5c07b3d8)
    at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140734737396696,
1862044360775823369, 0, 140734737396712, 93865539234256,
140075868295200, -1861684891512606711, -1793372511693836279},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fff5c07b3d8,
0x7fff5c07b3d8}, data = {prev = 0x0, cleanup = 0x0, canceltype =
1544008664}}}
        not_first_call = <optimized out>
#35 0x00007f65f3246245 in __libc_start_main_impl
    (main=0x555ec61b5760, argc=1, argv=0x7fff5c07b3d8, init=<optimized
out>, fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7fff5c07b3c8) at ../csu/libc-start.c:381



More information about the pkg-gnome-maintainers mailing list