I ran into this bug today and did a bit of digging. Thought I'd pass that
along.

First note that this bug effects all of the rxvt-unicode variants, not just
rxvt-unicode-ml. Also note that killing X11 isn't required, Ctrl-Alt-F1
still works to switch to the console where you can kill urxvt and un-freeze
X11.

First a resource dump.

Corresponding Ubuntu bug.
https://bugs.launchpad.net/archlinux/+source/rxvt-unicode/+bug/317366

rxvt-unicode ml threads (2 threads; links to first posts)
http://lists.schmorp.de/pipermail/rxvt-unicode/2009q3/001035.html
http://lists.schmorp.de/pipermail/rxvt-unicode/2009q3/001042.html

According to urxvt ml thread this is an xorg bug. Ubuntu applied the patch
from the second ml thread listed above, but upstream decided against it as
it was an xorg bug. They considered a compile time option for the
workaround but decided it 'broke' things and didn't belong in the urxvt
codebase.

The dev I spoke to on irc (schmorp) said he thought it was a decent enough
"temporary workaround" as long as it was removed once the xorg bug was
fixed. So I have attached the patch to this as a possible fix.

If you're looking to just prevent the hang you can disable the popup menus
via an .Xresources tweak.

URxvt*perl-ext-common: default,-option-popup,-selection-popup

-- 

John Eikenberry
[...@zhar.net - http://zhar.net]
[PGP public key @ http://zhar.net/jae_at_zhar_net.gpg]
______________________________________________________________
"Perfection is attained, not when no more can be added, but when no more 
 can be removed." -- Antoine de Saint-Exupery
Index: src/perl/urxvt-popup
===================================================================
RCS file: /schmorpforge/rxvt-unicode/src/perl/urxvt-popup,v
retrieving revision 1.15
diff -u -r1.15 urxvt-popup
--- src/perl/urxvt-popup	24 Dec 2007 08:21:40 -0000	1.15
+++ src/perl/urxvt-popup	2 Aug 2009 08:22:52 -0000
@@ -120,7 +120,7 @@
    $self->refresh;
 
    # might fail, but try anyways
-   $self->grab ($self->{data}{event}{time}, 1)
+   $self->grab ($self->{data}{event}{time})
       and $self->allow_events_async;
 
    on_button_press $self, $self->{data}{event} if $self->{data}{event}{button};
@@ -132,7 +132,7 @@
    my ($self, $event) = @_;
 
    # should definitely not fail
-   $self->grab ($self->{data}{event}{time}, 1)
+   $self->grab ($self->{data}{event}{time})
       and $self->allow_events_async;
 }

Attachment: signature.asc
Description: Digital signature

Reply via email to