Bug#401194: libvte4: gnome-terminal uses 100% cpu when the screen is full of email addresses.

Arthur Petitpierre arthur.petitpierre at cea.fr
Fri Dec 1 16:33:59 CET 2006


Package: libvte4
Version: 1:0.12.2-4
Severity: normal

If your gnome-terminal's window is full of email addresses,
gnome-terminal starts to take 100% cpu as soon as your mouse is put over
the text.

To reproduce it, open a gnome-terminal, maximise it and enter the
following at the prompt :
$ python -c "print(['toto at toto.com' for i in range(500)])"

You end up with a window full of email addresses and when your cursor
pass over the window, gnome-terminal take 100% for a while.

If you run it inside gdb and interrupt it, you'll get the following back
trace :
(gdb) bt
#0  0xa76a757d in regfree () from /lib/tls/i686/cmov/libc.so.6
#1  0xa76b3287 in re_compile_fastmap () from /lib/tls/i686/cmov/libc.so.6
#2  0xa76ba54a in re_compile_pattern () from /lib/tls/i686/cmov/libc.so.6
#3  0xa76bd649 in regexec () from /lib/tls/i686/cmov/libc.so.6
#4  0xa7e964b8 in _vte_regex_exec (regex=0x81a8980, 
    string=0x82b212a "to at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto at toto.com ', 'toto"..., nmatch=256, matches=0xafccff8c)
    at /home/arthur/src/debian/vte-0.12.2/./src/vteregex.c:252
#5  0xa7e89ac4 in vte_terminal_match_check_internal (terminal=0x8125be0, column=82, row=28, tag=0x0, start=0xafcd07e0, end=0xafcd07dc)
    at /home/arthur/src/debian/vte-0.12.2/./src/vte.c:1256
#6  0xa7e89da1 in vte_terminal_match_hilite (terminal=0x8125be0, x=660, y=398) at /home/arthur/src/debian/vte-0.12.2/./src/vte.c:4620
#7  0xa7e8a29c in vte_terminal_motion_notify (widget=0x8125be0, event=0x810b850) at /home/arthur/src/debian/vte-0.12.2/./src/vte.c:5761
#8  0xa7ca6250 in _gtk_marshal_BOOLEAN__BOXED (closure=0x80fdcd8, return_value=0xafcd09c0, n_param_values=2, param_values=0xafcd0a9c, 
    invocation_hint=0xafcd09ac, marshal_data=0xa7e8a1c0) at gtkmarshalers.c:83
#9  0xa780ff49 in g_type_class_meta_marshal (closure=0x80fdcd8, return_value=0xafcd09c0, n_param_values=2, param_values=0xafcd0a9c, 
    invocation_hint=0xafcd09ac, marshal_data=0xbc) at gclosure.c:567
#10 0xa781198b in IA__g_closure_invoke (closure=0x80fdcd8, return_value=0xafcd09c0, n_param_values=2, param_values=0xafcd0a9c, 
    invocation_hint=0xafcd09ac) at gclosure.c:490
#11 0xa782256f in signal_emit_unlocked_R (node=0x80fdbb0, detail=0, instance=0x8125be0, emission_return=0xafcd0c5c, 
    instance_and_params=0xafcd0a9c) at gsignal.c:2478
#12 0xa7823208 in IA__g_signal_emit_valist (instance=0x8125be0, signal_id=52, detail=0, 
    var_args=0xafcd0ce0 "�fͯP�\020\b�\022\b_@٧�\022\bH\225\v\b") at gsignal.c:2209
#13 0xa78235d9 in IA__g_signal_emit (instance=0x8125be0, signal_id=52, detail=0) at gsignal.c:2243
#14 0xa7d8fe84 in gtk_widget_event_internal (widget=0x8125be0, event=0x810b850) at gtkwidget.c:3751
#15 0xa7c9fbd3 in IA__gtk_propagate_event (widget=0x8125be0, event=0x810b850) at gtkmain.c:2195
#16 0xa7ca0e07 in IA__gtk_main_do_event (event=0x810b850) at gtkmain.c:1424
#17 0xa7b39eea in gdk_event_dispatch (source=0x80ad648, callback=0, user_data=0x0) at gdkevents-x11.c:2291
#18 0xa7769731 in IA__g_main_context_dispatch (context=0x80ad690) at gmain.c:2045
#19 0xa776c7a6 in g_main_context_iterate (context=0x80ad690, block=1, dispatch=1, self=0x80b25d0) at gmain.c:2677
#20 0xa776cb67 in IA__g_main_loop_run (loop=0x80aebf0) at gmain.c:2881
#21 0xa7ca1281 in IA__gtk_main () at gtkmain.c:1003
#22 0x0805ffc6 in ?? ()
#23 0x080abaa0 in ?? ()
#24 0x08080cbb in _IO_stdin_used ()
#25 0x0805cc10 in ?? ()
#26 0x00000000 in ?? ()

Having looked at vte_terminal_match_check_internal in src/vte.c, it
seems that every token inside the buffer is search against the list of
registered regexps.

Arthur Petitpierre.


-- System Information:
Debian Release: 4.0
  APT prefers testing
  APT policy: (900, 'testing'), (800, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17-2-686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages libvte4 depends on:
ii  libatk1.0-0                  1.12.3-1    The ATK accessibility toolkit
ii  libc6                        2.3.6.ds1-8 GNU C Library: Shared libraries
ii  libcairo2                    1.2.4-4     The Cairo 2D vector graphics libra
ii  libfontconfig1               2.4.1-2     generic font configuration library
ii  libglib2.0-0                 2.12.4-1    The GLib library of C routines
ii  libgtk2.0-0                  2.8.20-3    The GTK+ graphical user interface 
ii  libice6                      1:1.0.1-2   X11 Inter-Client Exchange library
ii  libncurses5                  5.5-5       Shared libraries for terminal hand
ii  libpango1.0-0                1.14.7-1    Layout and rendering of internatio
ii  libsm6                       1:1.0.1-3   X11 Session Management library
ii  libvte-common                1:0.12.2-4  Terminal emulator widget for GTK+ 
ii  libx11-6                     2:1.0.3-3   X11 client-side library
ii  libxcursor1                  1.1.7-4     X cursor management library
ii  libxext6                     1:1.0.1-2   X11 miscellaneous extension librar
ii  libxfixes3                   1:4.0.1-4   X11 miscellaneous 'fixes' extensio
ii  libxft2                      2.1.8.2-8   FreeType-based font drawing librar
ii  libxi6                       1:1.0.1-3   X11 Input extension library
ii  libxinerama1                 1:1.0.1-4.1 X11 Xinerama extension library
ii  libxrandr2                   2:1.1.0.2-4 X11 RandR extension library
ii  libxrender1                  1:0.9.1-3   X Rendering Extension client libra

libvte4 recommends no packages.

-- no debconf information





More information about the Pkg-gnome-maintainers mailing list