reopen 423141
thanks

Hi, the bug recurred again today, and I finally discovered the cause. It
is because I have Opera currently viewing a page that contains a ®
entity in its <title> attribute. When I switch to this tab, Opera uses
it as its window title, and then C-t w causes ratpoison to exit with
status 134. I managed to capture the error message as well: "Virtual
memory exhausted". If I switch to another tab whose title doesn't
contain this character, C-t w works fine.

Perhaps this is a UTF-8 issue that hasn't been fully resolved? I'm not
sure what other characters may cause this problem, but I can
consistently crash ratpoison this way.

Anyway, if you want to reproduce this bug, you can create a simple HTML
file and open it in Opera, then hit C-t w. Something like this:

<html><head><title>Crash page&reg;</title></head><body></body></html>

I'm running in a UTF-8 locale, if that makes a difference. Also, my
.ratpoisonrc looks like:

set winfmt %n%s%80t
set wingravity center
set font -misc-fixed-medium-r-normal-*-18-*-*-*-*-*-iso10646-1


I suspect it may be a combination of UTF-8 locale, font, and special
character in window title, that triggers this bug in ratpoison. The font
referenced in above is from the xfonts-efont-unicode (or
xfonts-efont-unicode-ib) package.

I also attached valgrind to ratpoison, and here is the output:

==24073== Memcheck, a memory error detector.
==24073== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==24073== Using LibVEX rev 1732, a library for dynamic binary translation.
==24073== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==24073== Using valgrind-3.2.3-Debian, a dynamic binary instrumentation 
framework.
==24073== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==24073== For more details, rerun with: -v
==24073== 
==24073== Source and destination overlap in mempcpy(0x42EC678, 0x42EC678, 25)
==24073==    at 0x4023B24: mempcpy (mc_replace_strmem.c:116)
==24073==    by 0x41A06F4: _IO_default_xsputn (in /lib/libc-2.5.so)
==24073==    by 0x417C202: vfprintf (in /lib/libc-2.5.so)
==24073==    by 0x4195C1B: vsprintf (in /lib/libc-2.5.so)
==24073==    by 0x4181F2D: sprintf (in /lib/libc-2.5.so)
==24073==    by 0x40BF9A0: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x40BFAC5: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x40C0424: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x40722B6: XCreateOC (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x40667B6: XCreateFontSet (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x805BFCD: (within /usr/bin/ratpoison)
==24073==    by 0x805CEDB: (within /usr/bin/ratpoison)
==24073== 
==24073== Invalid read of size 4
==24073==    at 0x4016530: (within /lib/ld-2.5.so)
==24073==    by 0x4006009: (within /lib/ld-2.5.so)
==24073==    by 0x40084F5: (within /lib/ld-2.5.so)
==24073==    by 0x40121D4: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==    by 0x4288B60: dlopen (in /lib/libdl-2.5.so)
==24073==    by 0x4061448: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x406190F: XCreateGlyphCursor (in /usr/lib/libX11.so.6.2.0)
==24073==  Address 0x42EDAD8 is 24 bytes inside a block of size 25 alloc'd
==24073==    at 0x40224B0: malloc (vg_replace_malloc.c:149)
==24073==    by 0x4008AF3: (within /lib/ld-2.5.so)
==24073==    by 0x40121D4: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==    by 0x4288B60: dlopen (in /lib/libdl-2.5.so)
==24073==    by 0x4061448: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x406190F: XCreateGlyphCursor (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x4061CAC: XCreateFontCursor (in /usr/lib/libX11.so.6.2.0)
==24073== 
==24073== Invalid read of size 4
==24073==    at 0x4016530: (within /lib/ld-2.5.so)
==24073==    by 0x4006009: (within /lib/ld-2.5.so)
==24073==    by 0x40084F5: (within /lib/ld-2.5.so)
==24073==    by 0x400C616: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x400CBDA: (within /lib/ld-2.5.so)
==24073==    by 0x4012234: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==  Address 0x42EDE10 is 24 bytes inside a block of size 25 alloc'd
==24073==    at 0x40224B0: malloc (vg_replace_malloc.c:149)
==24073==    by 0x4008AF3: (within /lib/ld-2.5.so)
==24073==    by 0x400C616: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x400CBDA: (within /lib/ld-2.5.so)
==24073==    by 0x4012234: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==    by 0x4288B60: dlopen (in /lib/libdl-2.5.so)
==24073== 
==24073== Conditional jump or move depends on uninitialised value(s)
==24073==    at 0x400B3CC: (within /lib/ld-2.5.so)
==24073==    by 0x401230B: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==    by 0x4288B60: dlopen (in /lib/libdl-2.5.so)
==24073==    by 0x4061448: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x406190F: XCreateGlyphCursor (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x4061CAC: XCreateFontCursor (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x805F232: (within /usr/bin/ratpoison)
==24073== 
==24073== Conditional jump or move depends on uninitialised value(s)
==24073==    at 0x400B0CA: (within /lib/ld-2.5.so)
==24073==    by 0x401230B: (within /lib/ld-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x4011C5D: (within /lib/ld-2.5.so)
==24073==    by 0x4288C2C: (within /lib/libdl-2.5.so)
==24073==    by 0x400E255: (within /lib/ld-2.5.so)
==24073==    by 0x428929B: (within /lib/libdl-2.5.so)
==24073==    by 0x4288B60: dlopen (in /lib/libdl-2.5.so)
==24073==    by 0x4061448: (within /usr/lib/libX11.so.6.2.0)
==24073==    by 0x406190F: XCreateGlyphCursor (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x4061CAC: XCreateFontCursor (in /usr/lib/libX11.so.6.2.0)
==24073==    by 0x805F232: (within /usr/bin/ratpoison)
ratpoison: Virtual memory exhausted==24073== 
==24073== ERROR SUMMARY: 35 errors from 5 contexts (suppressed: 31 from 1)
==24073== malloc/free: in use at exit: 100,738,676 bytes in 1,266 blocks.
==24073== malloc/free: 2,421 allocs, 1,155 frees, 402,784,955 bytes allocated.
==24073== For counts of detected errors, rerun with: -v
==24073== searching for pointers to 1,266 not-freed blocks.
==24073== checked 229,156 bytes.
==24073== 
==24073== LEAK SUMMARY:
==24073==    definitely lost: 20 bytes in 1 blocks.
==24073==      possibly lost: 4,316 bytes in 146 blocks.
==24073==    still reachable: 100,734,340 bytes in 1,119 blocks.
==24073==         suppressed: 0 bytes in 0 blocks.
==24073== Rerun with --leak-check=full to see details of leaked memory.


Hope this helps to find the real cause of the bug. Please let me know if
you want me to re-run valgrind with different options. I've setup my
.xsession so that it runs ratpoison in a loop, displaying a prompt
whether to restart ratpoison if it crashes. So I should be able to try
out different things more easily without having to interrupt my session.


T

-- 
He who sacrifices functionality for ease of use, loses both and deserves 
neither. -- Slashdotter


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to