GNOME Bugzilla – Bug 591583
Padre (a wxPerl+Gtk IDE) hangs when editing Perl code with gtk-2.17.7
Last modified: 2009-09-10 11:45:25 UTC
Please describe the problem: Hi all! With Padre: http://padre.perlide.org/trac/ticket/441 When editing test.pl from: https://opensvn.csie.org/linuxisrael/list-of-mailing-lists/trunk/iglu.org.il with padre, and editing the line: {{{{{{{ $main_r->email_address("shlomif", "iglu.org.il"); }}}}}}} I'm getting sluggish behaviour whenever I enter a new character. A workaround is to use the scrollwhell after the program hangs. I've tried it with Padre trunk. I'm using Padre on Mandriva Linux Cooker with gtk-2.17.6 (someone else tried with 2.17.7 and could reproduce it). Downgrading gtk+ to 2.16.x (using LD_LIBRARY_PATH) solves this problem. See also: 1. http://padre.perlide.org/trac/ticket/441 2. https://qa.mandriva.com/show_bug.cgi?id=52802 Steps to reproduce: 1. Install Padre ("urpmi padre" on Mandriva ; "apt-get install padre" on Debian/Ubuntu ; also available on CPAN ) 2. Edit a Perl program or module. 3. Try to insert characters inside a function call. Actual results: Padre hangs. Expected results: Padre should display the characters while continuing to work properly. Does this happen every time? Yes. Other information: It happens with gtk-2.17.6 or 2.17.7. Does not happen after setting LD_LIBRARY_PATH to 2.16.x.
I can reproduce this, just typing a character in an empty window goes into some sort of "hang" mode. It doesn't actually hang though, as it responds to some events like scrolling with a scrollwheel or with the scrollbar and keyboard shortcuts, but otherwise repaints never happen and events don't seem to be delivered at all. Opening the outline view seems to somehow make this harder to trigger. However, its very hard for me to debug this as there are soo many layers, there is padre itself, then perl-Wx and perl, then wxwindows and then gtk+ at the end. I need someone who are comfortable with this codebase to narrow this down a bit and try to figure out what is going on.
Fixed by commit c4d2c38238f68bab1331631a4639c0fd49730cfd. Padre in some cases reentered the mainloop from an expose handler and this could cause issues with gdk_window_process_all_updates recursion avoidance handling.