gtk_accessible_text_get_contents: assertion 'end >= start' failed
This happens not infrequently in Epiphany, but I haven't found a reproducer yet:
(epiphany:270898): Gtk-CRITICAL **: 14:30:55.960: gtk_accessible_text_get_contents: assertion 'end >= start' failed
Here is a backtrace:
#0 _g_log_abort (breakpoint=1) at ../../../../Projects/glib/glib/gmessages.c:429
#1 0x00007f0d6e19ed47 in g_logv (log_domain=0x7f0d6d762a40 "Gtk", log_level=G_LOG_LEVEL_CRITICAL, format=0x7f0d6e21f95c "%s: assertion '%s' failed",
args=0x7ffde35da048) at ../../../../Projects/glib/glib/gmessages.c:1273
#2 0x00007f0d6e19ee3e in g_log (log_domain=0x7f0d6d762a40 "Gtk", log_level=G_LOG_LEVEL_CRITICAL, format=0x7f0d6e21f95c "%s: assertion '%s' failed")
at ../../../../Projects/glib/glib/gmessages.c:1315
#3 0x00007f0d6e1a282f in g_return_if_fail_warning (log_domain=0x7f0d6d762a40 "Gtk",
pretty_function=0x7f0d6d709c60 <__func__.10.lto_priv.3> "gtk_accessible_text_get_contents", expression=0x7f0d6d767827 "end >= start")
at ../../../../Projects/glib/glib/gmessages.c:3000
#4 0x00007f0d6d2a02e2 in gtk_accessible_text_get_contents (self=0x2638c10, start=2, end=1) at ../gtk/gtkaccessibletext.c:134
#5 0x00007f0d6d51aba9 in gtk_at_spi_context_update_text_contents (context=0x2630520, change=<optimized out>, start=2, end=1)
at ../gtk/a11y/gtkatspicontext.c:1652
#6 gtk_at_spi_context_update_text_contents (context=0x2630520, change=<optimized out>, start=2, end=1) at ../gtk/a11y/gtkatspicontext.c:1621
#7 0x00007f0d6d2a071c in gtk_at_context_update_text_contents (self=0x2630520, change=GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT, start=2, end=1)
at ../gtk/gtkatcontext.c:1577
#8 gtk_at_context_update_text_contents (self=0x2630520, change=GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT, start=2, end=1) at ../gtk/gtkatcontext.c:1569
#9 gtk_accessible_text_update_contents (self=<optimized out>, change=GTK_ACCESSIBLE_TEXT_CONTENT_CHANGE_INSERT, start=2, end=1)
at ../gtk/gtkaccessibletext.c:518
#10 0x00007f0d6d406025 in gtk_text_insert_text (self=0x2638c10, text=<optimized out>, length=<optimized out>, position=0x7ffde35da9d4)
at ../gtk/gtktext.c:3452
#11 editable_insert_text (editable=0x2638c10, text=<optimized out>, length=<optimized out>, position=0x7ffde35da9d4) at ../gtk/gtktext.c:1550
#12 0x00007f0d6e2ba85e in g_type_iface_meta_marshal (closure=0x256ea60, return_value=0x0, n_param_values=4, param_values=0x7ffde35da570,
invocation_hint=0x7ffde35da410, marshal_data=0x10) at ../../../../Projects/glib/gobject/gclosure.c:1086
#13 0x00007f0d6e2ba01f in g_closure_invoke (closure=0x256ea60, return_value=0x0, n_param_values=4, param_values=0x7ffde35da570,
invocation_hint=0x7ffde35da410) at ../../../../Projects/glib/gobject/gclosure.c:834
#14 0x00007f0d6e2db6d2 in signal_emit_unlocked_R (node=0x7ffde35da6f0, detail=0, instance=0x2638c10, emission_return=0x0,
instance_and_params=0x7ffde35da570) at ../../../../Projects/glib/gobject/gsignal.c:3928
#15 0x00007f0d6e2da3a9 in signal_emit_valist_unlocked (instance=0x2638c10, signal_id=189, detail=0, var_args=0x7ffde35da8f8)
at ../../../../Projects/glib/gobject/gsignal.c:3520
#16 0x00007f0d6e2d90af in g_signal_emit_valist (instance=0x2638c10, signal_id=189, detail=0, var_args=0x7ffde35da8f8)
at ../../../../Projects/glib/gobject/gsignal.c:3263
#17 0x00007f0d6e2da93a in g_signal_emit (instance=0x2638c10, signal_id=189, detail=0) at ../../../../Projects/glib/gobject/gsignal.c:3583
#18 0x00007f0d6d41006f in gtk_text_enter_text (self=self@entry=0x2638c10, str=0x4755480 "4") at ../gtk/gtktext.c:4460
#19 0x00007f0d6d4101d4 in gtk_text_commit_cb (context=<optimized out>, str=<optimized out>, self=0x2638c10) at ../gtk/gtktext.c:4363
#20 gtk_text_commit_cb (context=<optimized out>, str=<optimized out>, self=0x2638c10) at ../gtk/gtktext.c:4355
#21 0x00007f0d6e2bf2c8 in g_cclosure_marshal_VOID__STRINGv (closure=0x263c890, return_value=0x0, instance=0x263c320, args=0x7ffde35dae88, marshal_data=0x0,
n_params=1, param_types=0x257d810) at ../../../../Projects/glib/gobject/gmarshal.c:1462
#22 0x00007f0d6e2ba313 in _g_closure_invoke_va (closure=0x263c890, return_value=0x0, instance=0x263c320, args=0x7ffde35dae88, n_params=1,
param_types=0x257d810) at ../../../../Projects/glib/gobject/gclosure.c:897
#23 0x00007f0d6e2d96d1 in signal_emit_valist_unlocked (instance=0x263c320, signal_id=213, detail=0, var_args=0x7ffde35dae88)
at ../../../../Projects/glib/gobject/gsignal.c:3424
#24 0x00007f0d6e2daab0 in g_signal_emit_by_name (instance=0x263c320, detailed_signal=0x7f0d6d77f8dd "commit")
at ../../../../Projects/glib/gobject/gsignal.c:3624
#25 0x00007f0d6e2bf1b5 in g_cclosure_marshal_VOID__STRING (closure=0x29b6c90, return_value=0x0, n_param_values=2, param_values=0x7ffde35db280,
invocation_hint=0x7ffde35db120, marshal_data=0x0) at ../../../../Projects/glib/gobject/gmarshal.c:1404
#26 0x00007f0d6e2ba01f in g_closure_invoke (closure=0x29b6c90, return_value=0x0, n_param_values=2, param_values=0x7ffde35db280,
invocation_hint=0x7ffde35db120) at ../../../../Projects/glib/gobject/gclosure.c:834
#27 0x00007f0d6e2db4b8 in signal_emit_unlocked_R (node=0x7ffde35db3d0, detail=0, instance=0x29b5530, emission_return=0x0,
instance_and_params=0x7ffde35db280) at ../../../../Projects/glib/gobject/gsignal.c:3888
#28 0x00007f0d6e2da3a9 in signal_emit_valist_unlocked (instance=0x29b5530, signal_id=213, detail=0, var_args=0x7ffde35db5a8)
at ../../../../Projects/glib/gobject/gsignal.c:3520
#29 0x00007f0d6e2daab0 in g_signal_emit_by_name (instance=0x29b5530, detailed_signal=0x7f0d6d77f8dd "commit")
at ../../../../Projects/glib/gobject/gsignal.c:3624
#30 0x00007f0d6d34d413 in gtk_im_context_simple_commit_string (context_simple=context_simple@entry=0x29b5530, str=str@entry=0x7ffde35db6c0 "4")
at ../gtk/gtkimcontextsimple.c:428
#31 0x00007f0d6d350077 in gtk_im_context_simple_commit_char (context_simple=0x29b5530, ch=52) at ../gtk/gtkimcontextsimple.c:439
#32 no_sequence_matches (context_simple=0x29b5530, n_compose=1, event=<optimized out>) at ../gtk/gtkimcontextsimple.c:722
#33 0x00007f0d6d302ff9 in gtk_event_controller_key_handle_event (controller=0x2635e80, event=0x4623c70, x=<optimized out>, y=<optimized out>)
at ../gtk/gtkeventcontrollerkey.c:99
#34 0x00007f0d6d45ae19 in gtk_event_controller_handle_event (controller=0x2635e80, event=<optimized out>, target=<optimized out>, x=<optimized out>,
y=<optimized out>) at ../gtk/gtkeventcontroller.c:362
#35 gtk_widget_run_controllers (widget=widget@entry=0x2638c10, event=event@entry=0x4623c70, target=target@entry=0x2638c10, x=0, y=0,
phase=phase@entry=GTK_PHASE_TARGET) at ../gtk/gtkwidget.c:4585
#36 0x00007f0d6d45b2cd in gtk_widget_event (widget=0x2638c10, event=0x4623c70, target=0x2638c10) at ../gtk/gtkwidget.c:4774
#37 gtk_widget_event (widget=0x2638c10, event=0x4623c70, target=0x2638c10) at ../gtk/gtkwidget.c:4753
#38 0x00007f0d6d3771b2 in gtk_propagate_event_internal (widget=widget@entry=0x2638c10, event=event@entry=0x4623c70, topmost=<optimized out>)
at ../gtk/gtkmain.c:1947
#39 0x00007f0d6d3773c0 in gtk_propagate_event (widget=widget@entry=0x2638c10, event=event@entry=0x4623c70) at ../gtk/gtkmain.c:1997
#40 0x00007f0d6d377ca3 in gtk_main_do_event (event=<optimized out>) at ../gtk/gtkmain.c:1687
#41 0x00007f0d6d5d1a0e in _gdk_marshal_BOOLEAN__POINTERv (closure=<optimized out>, return_value=0x7ffde35dbc70, instance=<optimized out>,
args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x291b080) at gdk/gdkmarshalers.c:302
#42 0x00007f0d6d65bb8a in gdk_surface_event_marshallerv (closure=0x299b6d0, return_value=0x7ffde35dbc70, instance=0x29246e0, args=0x7ffde35dbe98,
--Type <RET> for more, q to quit, c to continue without paging--c
marshal_data=0x0, n_params=1, param_types=0x291b080) at ../gdk/gdksurface.c:462
#43 0x00007f0d6e2ba313 in _g_closure_invoke_va (closure=0x299b6d0, return_value=0x7ffde35dbc70, instance=0x29246e0, args=0x7ffde35dbe98, n_params=1,
param_types=0x291b080) at ../../../../Projects/glib/gobject/gclosure.c:897
#44 0x00007f0d6e2d96d1 in signal_emit_valist_unlocked (instance=0x29246e0, signal_id=362, detail=0, var_args=0x7ffde35dbe98)
at ../../../../Projects/glib/gobject/gsignal.c:3424
#45 0x00007f0d6e2d90af in g_signal_emit_valist (instance=0x29246e0, signal_id=362, detail=0, var_args=0x7ffde35dbe98)
at ../../../../Projects/glib/gobject/gsignal.c:3263
#46 0x00007f0d6e2da93a in g_signal_emit (instance=0x29246e0, signal_id=362, detail=0) at ../../../../Projects/glib/gobject/gsignal.c:3583
#47 0x00007f0d6d6f4da5 in gdk_surface_handle_event.isra.0 (event=event@entry=0x4623c70) at ../gdk/gdksurface.c:2932
#48 0x00007f0d6d6f5180 in _gdk_event_emit.isra.0 (event=event@entry=0x4623c70) at ../gdk/gdkevents.c:491
#49 0x00007f0d6d5e2b56 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>)
at ../gdk/wayland/gdkeventsource.c:142
#50 0x00007f0d6e191abc in g_main_dispatch (context=0x214b580) at ../../../../Projects/glib/glib/gmain.c:3344
#51 0x00007f0d6e192b36 in g_main_context_dispatch_unlocked (context=0x214b580) at ../../../../Projects/glib/glib/gmain.c:4152
#52 0x00007f0d6e192cea in g_main_context_iterate_unlocked (context=0x214b580, block=1, dispatch=1, self=0x2150590)
at ../../../../Projects/glib/glib/gmain.c:4217
#53 0x00007f0d6e192da2 in g_main_context_iteration (context=0x214b580, may_block=1) at ../../../../Projects/glib/glib/gmain.c:4282
#54 0x00007f0d6df22708 in g_application_run (application=0x218cf50, argc=1, argv=0x7ffde35dc3e8) at ../../../../Projects/glib/gio/gapplication.c:2712
#55 0x0000000000404f25 in main (argc=1, argv=0x7ffde35dc3e8) at ../../../../Projects/epiphany/src/ephy-main.c:459
So start=2, end=1
, and GtkAccessibleText doesn't like this because the end is supposed to be greater than or equal to start. The start=2, end=1
is provided several call sites higher up, by gtk_text_insert_text
which provides the bogus values to gtk_accessible_text_update_contents
. The final argument to gtk_accessible_text_update_contents
is n_inserted
but should surely be *position + n_inserted
.