After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 127731 - GtkTextView: Problems with very long lines.
GtkTextView: Problems with very long lines.
Status: RESOLVED OBSOLETE
Product: gtk+
Classification: Platform
Component: Widget: GtkTextView
2.2.x
Other Linux
: Normal normal
: Medium fix
Assigned To: gtk-bugs
gtk-bugs
: 431636 605978 669650 709899 735327 741358 741499 746919 756400 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2003-11-23 14:44 UTC by Andreas Constantinides (MegaHz)
Modified: 2018-05-02 13:54 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Andreas Constantinides (MegaHz) 2003-11-23 14:44:23 UTC
Hello,
I discover a strange but simple buffer overflow in gedit.
I am using RH9, 


to demostrate the buffer here is a simple file buffer generator:

===========buffer.c == cut here===============
/*
        simple buffer overflow generator by MegaHz megahz@megahz.org
*/
#include <iostream>
using namespace std;
 
int main()
{
int i;
for (i=0;i<=9999999;i++)
        {
        cout << "A";
        }
        return 0;
}
===========================================


# g++ -o buffer buffer.c
# ./buffer > lala
# gedit lala
Segmentation fault
#


MegaHz (Andreas Constantinides)
www.megahz.org
www.cyhackportal.com
Comment 1 Paolo Maggi 2003-12-20 10:09:53 UTC
Are you able to reproduce it using the testtext program in gtk+/tests ?
Comment 2 Paolo Maggi 2003-12-31 00:32:51 UTC
This is a GtkTextView bug, it seems to have big problems with long lines.
Comment 3 Owen Taylor 2004-01-05 16:26:04 UTC
Backtrace? Do you think you could try to debug the problem,
Paolo?

(Note that this is expected to be *very* slow. And for
that reason, gedit should probably check for this when
loading text files. But it shouldn't crash.)
Comment 4 Paolo Maggi 2004-01-05 16:37:25 UTC
Well, I tried with a shorter file, it didn't crash for me but after a
*very* long period (about 10 minutes) it gave me an unreadable line of
text (the characters was placed one upon another)
See also the related bug #114337.

I will try again with a bigger file when I will be back at work.
Comment 5 Elijah Newren 2004-06-19 18:44:57 UTC
Mass changing gtk+ bugs with target milestone of 2.4.2 to target 2.4.4, as
Matthias said he was trying to do himself on IRC and was asking for help with. 
If you see this message, it means I was successful at fixing the borken-ness in
bugzilla :)  Sorry for the spam; just query on this message and delete all
emails you get with this message, since there will probably be a lot.
Comment 6 Jed Wesley-Smith 2006-07-07 01:33:02 UTC
This bug would appear to be causing Eclipse users some trouble. Any chance of this getting some attention?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=87299

cheers,
jed.
Comment 7 Matthias Clasen 2007-04-25 13:36:19 UTC
*** Bug 431636 has been marked as a duplicate of this bug. ***
Comment 8 chuchiperriman 2013-07-14 21:50:08 UTC
Anyone can take a look to this bug? This bug is 10 years old!!! Please!!! Gedit, Anjuta and a lot of applications use GtkTextView (GtkSourceView in this case) and In my job y cannot open large json, xml etc files to work with it. 

I don't know how to fix it, I haven't got the knowlege to do it :( 

Really it is so difficult? If someone helps me I can try to fix it.
Comment 9 Sébastien Wilmet 2013-10-16 12:46:48 UTC
*** Bug 709899 has been marked as a duplicate of this bug. ***
Comment 10 Sébastien Wilmet 2013-11-06 19:28:25 UTC
*** Bug 605978 has been marked as a duplicate of this bug. ***
Comment 11 Sébastien Wilmet 2013-11-09 20:22:06 UTC
*** Bug 669650 has been marked as a duplicate of this bug. ***
Comment 12 Sébastien Wilmet 2014-08-24 14:05:02 UTC
*** Bug 735327 has been marked as a duplicate of this bug. ***
Comment 13 Sébastien Wilmet 2014-12-10 19:26:59 UTC
*** Bug 741358 has been marked as a duplicate of this bug. ***
Comment 14 Sébastien Wilmet 2014-12-14 11:12:34 UTC
*** Bug 741499 has been marked as a duplicate of this bug. ***
Comment 15 Sébastien Wilmet 2015-04-18 09:17:19 UTC
*** Bug 746919 has been marked as a duplicate of this bug. ***
Comment 16 Daniel Roesler 2015-08-02 16:36:37 UTC
This bug is now close to 12 years old. To help add some incentive to fix it, I put a $50 bounty on this bug. I encourage others to add to the bounty.

https://www.bountysource.com/issues/3553416-gtktextview-problems-with-very-long-lines
Comment 17 Emmanuele Bassi (:ebassi) 2015-08-02 16:52:24 UTC
If this bug is about a crash, I still haven't seen a backtrace.

If this bug is, on the other hand, about performance issues with long lines of text inside GtkTextView, then it's highly unlikely that this bug can be fixed without side effects or in a reasonable amount of time — even with a bounty. After all, it's not like this bug has been left open for 12 years because it's trivial to fix.

Measuring text is an inherently expensive operation, and GtkTextView already tries to minimise it by splitting up paragraphs into separate PangoLayouts; this is obviously not going to work if the whole file is inside a single line.

Ideally, the editor could apply some sort of normalization rule for structured text contents, and add line breaks where semantically makes more sense — i.e. XML could be "prettified" on load, and "unprettified" on save — but that's something that can only be done at a layer above the tool kit (a GtkTextView has no idea what it's currently displaying).
Comment 18 Daniel Roesler 2015-08-02 17:43:27 UTC
Steps to reproduce:

1. wget https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js

2. gedit ext-all.js


Result:

gedit will freeze


Notes:

This minified javascript file is only 2.1 MB, but it is one line that is 2067722 characters long. Opens in vim, firefox, chromium, and Kate just fine.
Comment 19 André Klapper 2015-08-02 18:04:31 UTC
Just hanging. No crash here.

$:andre\> rpm -q gedit
gedit-3.16.2-1.fc22.x86_64
$:andre\> wget https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js
$:andre\> gdb gedit
(gdb) run ext-all.js
[...]
(gedit:5001): GtkSourceView-CRITICAL **: Highlighting a single line took too much time, syntax highlighting will be disabled
[...]
^C
Program received signal SIGINT, Interrupt.
process_item (layout=layout@entry=0x17b2230, line=line@entry=0x2c59e80, state=state@entry=0x7fffffff7b10, force_fit=force_fit@entry=1, 
    no_break_at_end=no_break_at_end@entry=0) at pango-layout.c:3438
3438		width += state->log_widths[state->log_widths_offset + i];
(gdb) thread apply all bt

Thread 1 (Thread 0x7ffff7fb9980 (LWP 5252))

  • #0 process_item
    at pango-layout.c line 3438
  • #1 process_line
    at pango-layout.c line 3704
  • #2 pango_layout_check_lines
    at pango-layout.c line 4027
  • #3 pango_layout_get_extents_internal
    at pango-layout.c line 2587
  • #4 pango_layout_get_extents
    at pango-layout.c line 2782
  • #5 gtk_text_layout_get_line_display
    at gtktextlayout.c line 2541
  • #6 gtk_text_layout_draw
    at gtktextdisplay.c line 897
  • #7 gtk_text_view_paint
    at gtktextview.c line 5409
  • #8 draw_text
    at gtktextview.c line 5443
  • #9 _gtk_pixel_cache_repaint
    at gtkpixelcache.c line 362
  • #10 _gtk_pixel_cache_draw
    at gtkpixelcache.c line 454
  • #11 gtk_text_view_draw
    at gtktextview.c line 5530
  • #12 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #13 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #14 _g_closure_invoke_va
    at gclosure.c line 831
  • #15 g_signal_emit_valist
    at gsignal.c line 3214
  • #16 g_signal_emit
    at gsignal.c line 3361
  • #17 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #18 _gtk_widget_draw_internal
    at gtkwidget.c line 6942
  • #19 _gtk_widget_draw_windows
    at gtkwidget.c line 7065
  • #20 _gtk_widget_draw_windows
    at gtkwidget.c line 7085
  • #21 _gtk_widget_draw_windows
    at gtkwidget.c line 7085
  • #22 _gtk_widget_draw
    at gtkwidget.c line 7136
  • #23 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #24 gtk_container_draw
    at gtkcontainer.c line 3539
  • #25 gtk_scrolled_window_draw
    at gtkscrolledwindow.c line 2232
  • #26 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #27 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #28 _g_closure_invoke_va
    at gclosure.c line 831
  • #29 g_signal_emit_valist
    at gsignal.c line 3214
  • #30 g_signal_emit
    at gsignal.c line 3361
  • #31 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #32 _gtk_widget_draw_internal
    at gtkwidget.c line 6942
  • #33 _gtk_widget_draw_windows
    at gtkwidget.c line 7065
  • #34 _gtk_widget_draw
    at gtkwidget.c line 7136
  • #35 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #36 gtk_container_draw
    at gtkcontainer.c line 3539
  • #37 gtk_box_draw
    at gtkbox.c line 447
  • #38 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #39 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #40 _g_closure_invoke_va
    at gclosure.c line 831
  • #41 g_signal_emit_valist
    at gsignal.c line 3214
  • #42 g_signal_emit
    at gsignal.c line 3361
  • #43 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #44 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #45 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #46 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #47 gtk_container_draw
    at gtkcontainer.c line 3539
  • #48 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #49 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #50 _g_closure_invoke_va
    at gclosure.c line 831
  • #51 g_signal_emit_valist
    at gsignal.c line 3214
  • #52 g_signal_emit
    at gsignal.c line 3361
  • #53 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #54 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #55 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #56 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #57 gtk_container_draw
    at gtkcontainer.c line 3539
  • #58 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #59 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #60 _g_closure_invoke_va
    at gclosure.c line 831
  • #61 g_signal_emit_valist
    at gsignal.c line 3214
  • #62 g_signal_emit
    at gsignal.c line 3361
  • #63 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #64 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #65 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #66 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #67 gtk_container_draw
    at gtkcontainer.c line 3539
  • #68 gtk_box_draw
    at gtkbox.c line 447
  • #69 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #70 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #71 _g_closure_invoke_va
    at gclosure.c line 831
  • #72 g_signal_emit_valist
    at gsignal.c line 3214
  • #73 g_signal_emit
    at gsignal.c line 3361
  • #74 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #75 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #76 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #77 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #78 gtk_notebook_draw
    at gtknotebook.c line 2628
  • #79 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #80 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #81 _g_closure_invoke_va
    at gclosure.c line 831
  • #82 g_signal_emit_valist
    at gsignal.c line 3214
  • #83 g_signal_emit
    at gsignal.c line 3361
  • #84 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #85 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #86 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #87 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #88 gtk_container_draw
    at gtkcontainer.c line 3539
  • #89 gtk_grid_draw
    at gtkgrid.c line 1704
  • #90 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #91 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #92 _g_closure_invoke_va
    at gclosure.c line 831
  • #93 g_signal_emit_valist
    at gsignal.c line 3214
  • #94 g_signal_emit
    at gsignal.c line 3361
  • #95 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #96 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #97 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #98 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #99 gtk_container_draw
    at gtkcontainer.c line 3539
  • #100 gtk_paned_draw
    at gtkpaned.c line 1756
  • #101 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #102 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #103 _g_closure_invoke_va
    at gclosure.c line 831
  • #104 g_signal_emit_valist
    at gsignal.c line 3214
  • #105 g_signal_emit
    at gsignal.c line 3361
  • #106 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #107 _gtk_widget_draw_internal
    at gtkwidget.c line 6942
  • #108 _gtk_widget_draw_windows
    at gtkwidget.c line 7065
  • #109 _gtk_widget_draw
    at gtkwidget.c line 7161
  • #110 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #111 gtk_container_draw
    at gtkcontainer.c line 3539
  • #112 gtk_box_draw
    at gtkbox.c line 447
  • #113 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #114 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #115 _g_closure_invoke_va
    at gclosure.c line 831
  • #116 g_signal_emit_valist
    at gsignal.c line 3214
  • #117 g_signal_emit
    at gsignal.c line 3361
  • #118 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #119 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #120 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #121 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #122 gtk_container_draw
    at gtkcontainer.c line 3539
  • #123 gtk_paned_draw
    at gtkpaned.c line 1756
  • #124 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #125 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #126 _g_closure_invoke_va
    at gclosure.c line 831
  • #127 g_signal_emit_valist
    at gsignal.c line 3214
  • #128 g_signal_emit
    at gsignal.c line 3361
  • #129 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #130 _gtk_widget_draw_internal
    at gtkwidget.c line 6942
  • #131 _gtk_widget_draw_windows
    at gtkwidget.c line 7065
  • #132 _gtk_widget_draw
    at gtkwidget.c line 7161
  • #133 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #134 gtk_container_draw
    at gtkcontainer.c line 3539
  • #135 gtk_box_draw
    at gtkbox.c line 447
  • #136 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #137 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #138 _g_closure_invoke_va
    at gclosure.c line 831
  • #139 g_signal_emit_valist
    at gsignal.c line 3214
  • #140 g_signal_emit
    at gsignal.c line 3361
  • #141 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #142 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #143 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #144 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #145 gtk_container_draw
    at gtkcontainer.c line 3539
  • #146 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #147 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #148 _g_closure_invoke_va
    at gclosure.c line 831
  • #149 g_signal_emit_valist
    at gsignal.c line 3214
  • #150 g_signal_emit
    at gsignal.c line 3361
  • #151 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #152 _gtk_widget_draw_internal
    at gtkwidget.c line 7151
  • #153 _gtk_widget_draw
    at gtkwidget.c line 7142
  • #154 gtk_container_propagate_draw
    at gtkcontainer.c line 3704
  • #155 gtk_container_draw
    at gtkcontainer.c line 3539
  • #156 gtk_window_draw
    at gtkwindow.c line 9761
  • #157 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #158 gtk_widget_draw_marshallerv
    at gtkwidget.c line 1097
  • #159 _g_closure_invoke_va
    at gclosure.c line 831
  • #160 g_signal_emit_valist
    at gsignal.c line 3214
  • #161 g_signal_emit
    at gsignal.c line 3361
  • #162 _gtk_widget_draw_internal
    at gtkwidget.c line 6964
  • #163 _gtk_widget_draw_internal
    at gtkwidget.c line 6942
  • #164 _gtk_widget_draw_windows
    at gtkwidget.c line 7065
  • #165 _gtk_widget_draw
    at gtkwidget.c line 7136
  • #166 gtk_widget_send_expose
    at gtkwidget.c line 7613
  • #167 gtk_main_do_event
    at gtkmain.c line 1673
  • #168 _gdk_window_process_updates_recurse_helper
    at gdkwindow.c line 3556
  • #169 gdk_window_process_updates_internal
    at gdkwindow.c line 3681
  • #170 gdk_window_process_updates_with_mode
    at gdkwindow.c line 3882
  • #171 _g_closure_invoke_va
    at gclosure.c line 831
  • #172 g_signal_emit_valist
    at gsignal.c line 3214
  • #173 g_signal_emit_by_name
    at gsignal.c line 3401
  • #174 gdk_frame_clock_paint_idle
    at gdkframeclockidle.c line 430
  • #175 gdk_threads_dispatch
    at gdk.c line 719
  • #176 g_timeout_dispatch
    at gmain.c line 4545
  • #177 g_main_dispatch
    at gmain.c line 3122
  • #178 g_main_context_dispatch
    at gmain.c line 3737
  • #179 g_main_context_iterate
    at gmain.c line 3808
  • #180 g_main_context_iteration
    at gmain.c line 3869
  • #181 g_application_run
    at gapplication.c line 2308
  • #182 main
    at gedit/gedit.c line 146

(gdb) info register
rax            0x185eed	1597165
rbx            0x0	0
rcx            0x592e1f4	93512180
rdx            0x1eb831	2013233
rsi            0x6d595400	1834570752
rdi            0x166c00	1469440
rbp            0x7fffffff7b10	0x7fffffff7b10
rsp            0x7fffffff7980	0x7fffffff7980
r8             0x0	0
r9             0x2400	9216
r10            0x2400	9216
r11            0x0	0
r12            0x0	0
r13            0x17b2230	24846896
r14            0x7fffffff7ad0	140737488321232
r15            0x0	0
rip            0x7ffff6334550	0x7ffff6334550 <process_item+240>
eflags         0x216	[ PF AF IF ]
cs             0x33	51
ss             0x2b	43
ds             0x0	0
es             0x0	0
fs             0x0	0
gs             0x0	0
(gdb) list
3433	      width = pango_glyph_string_get_width (state->glyphs);
3434	    }
3435	  else
3436	    {
3437	      for (i = 0; i < item->num_chars; i++)
3438		width += state->log_widths[state->log_widths_offset + i];
3439	    }
3440	
3441	  if ((width <= state->remaining_width || (item->num_chars == 1 && !line->runs)) &&
3442	      !no_break_at_end)
Comment 20 Sébastien Wilmet 2015-10-05 18:42:31 UTC
*** Bug 756086 has been marked as a duplicate of this bug. ***
Comment 21 Sébastien Wilmet 2015-10-15 12:24:32 UTC
*** Bug 756400 has been marked as a duplicate of this bug. ***
Comment 22 DF 2016-10-27 00:40:14 UTC
I tried even a 150kB single line file and it froze up. This along with it freezing up with binary files (bug 676526) and freezing up searching files with long lines (bug 756086) are all still alive and well in 3.22.0. The biggest problem I have with these bugs is having other files open which happen to not be saved and having gedit freeze up for an unknown amount of time, sometimes having to just kill gedit and lose my work. It's rare since I'm addicted to Ctrl-S but when it does happen, it's insanely frustrating, and gedit doesnt have a restore after crash.

If it's not easy to fix properly, can't these operations at least be made completely asynchronous (see comment on bug 676526#c14) so at least the rest of gedit remains usable?
Comment 23 Tobias Mueller 2017-11-23 15:32:42 UTC
FTR: Loading the file generated by

 python -c 'print "A"*18192'  > /tmp/crash.yml 

crashes gedit for me.
Comment 24 Stephen 2018-01-25 16:22:52 UTC
OK, proper fixes aside, since this is an *extremely* old bug that warrants its own entries on both https://wiki.gnome.org/Apps/Gedit/ReportingBugs and https://wiki.gnome.org/Apps/Gedit/FAQ, and is very painful if the user has unsaved files already open (and so can't readily kill gedit) it would make a huge amount of sense to just add a trivial check along the lines of "wc -L $filename", then warn "this file has very long lines and is likely to freeze Gedit for several minutes when opening/searching/whatever, continue?" before opening.

Even better, (or as well), offer to use standalone mode (gedit -s) so that it doesn't wreck the existing instance for several minutes.
Comment 25 GNOME Infrastructure Team 2018-05-02 13:54:08 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/gtk/issues/229.