On Tue, Mar 30, 2010 at 01:18:18PM +0200, Julien Danjou wrote:
> I'd suggest to grab awesome source, and build them. You can install
> build-deps with: apt-get build-dep awesome on Debian.
> 
> Then launch a X server:
> X :1
> export DISPLAY=:1
> ulimit -c unlimited
> /path/to/your/compiled/awesome

After doing this and running awesome for a while, I started to think
that the recompilation somehow fixed the bug. But today, I actually got
a crash again, and captured the core file.

(The version used is v3.4.4, ie. git commit 33fae259)

First, because I started awesome from a terminal, I noticed the
following debugging output:

*** glibc detected *** /home/jan/downloads/awesome/awesome/awesome: double free 
or corruption (out): 0x0000000000d31f50 ***
======= Backtrace: =========
/lib/libc.so.6[0x7fadf6d58d16]
/lib/libc.so.6(cfree+0x6c)[0x7fadf6d5d9bc]
/home/jan/downloads/awesome/awesome/awesome[0x4117df]
/usr/lib/liblua5.1.so.0[0x7fadf792ea56]
/usr/lib/liblua5.1.so.0[0x7fadf792ef69]
/usr/lib/liblua5.1.so.0[0x7fadf793078f]
/usr/lib/liblua5.1.so.0[0x7fadf7930e18]
/usr/lib/liblua5.1.so.0[0x7fadf792e647]
/usr/lib/liblua5.1.so.0(lua_close+0x60)[0x7fadf7935ac0]
/home/jan/downloads/awesome/awesome/awesome(awesome_atexit+0x136)[0x40fe86]
/home/jan/downloads/awesome/awesome/awesome(awesome_restart+0x9)[0x410719]
/home/jan/downloads/awesome/awesome/awesome[0x419b9e]
/home/jan/downloads/awesome/awesome/awesome[0x40fb4d]
/usr/lib/libev.so.3(ev_invoke_pending+0x61)[0x7fadf7b504d1]
/usr/lib/libev.so.3(ev_loop+0x66d)[0x7fadf7b5508d]
/home/jan/downloads/awesome/awesome/awesome(main+0x7b4)[0x410664]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7fadf6d06abd]
/home/jan/downloads/awesome/awesome/awesome[0x40f3f9]
======= Memory map: ========
00400000-00454000 r-xp 00000000 fe:06 1074829                            
/home/jan/downloads/awesome/awesome/.build-x61s-x86_64-linux-gnu-4.4.3/awesome
00653000-00655000 rw-p 00053000 fe:06 1074829                            
/home/jan/downloads/awesome/awesome/.build-x61s-x86_64-linux-gnu-4.4.3/awesome
00655000-01072000 rw-p 00000000 00:00 0                                  [heap]
7fadec000000-7fadec021000 rw-p 00000000 00:00 0 
7fadec021000-7fadf0000000 ---p 00000000 00:00 0 
7fadf1401000-7fadf1417000 r-xp 00000000 fe:04 394                        
/lib/libgcc_s.so.1
7fadf1417000-7fadf1616000 ---p 00016000 fe:04 394                        
/lib/libgcc_s.so.1
7fadf1616000-7fadf1617000 rw-p 00015000 fe:04 394                        
/lib/libgcc_s.so.1
7fadf1617000-7fadf1618000 r-xp 00000000 fe:04 400292                     
/usr/lib/imlib2/loaders/argb.so
7fadf1618000-7fadf1818000 ---p 00001000 fe:04 400292                     
/usr/lib/imlib2/loaders/argb.so
7fadf1818000-7fadf1819000 rw-p 00001000 fe:04 400292                     
/usr/lib/imlib2/loaders/argb.so
7fadf1819000-7fadf181c000 r-xp 00000000 fe:04 400293                     
/usr/lib/imlib2/loaders/bmp.so
7fadf181c000-7fadf1a1b000 ---p 00003000 fe:04 400293                     
/usr/lib/imlib2/loaders/bmp.so
7fadf1a1b000-7fadf1a1c000 rw-p 00002000 fe:04 400293                     
/usr/lib/imlib2/loaders/bmp.so
7fadf1a1c000-7fadf1a2b000 r-xp 00000000 fe:04 1147                       
/lib/libbz2.so.1.0.4
7fadf1a2b000-7fadf1c2a000 ---p 0000f000 fe:04 1147                       
/lib/libbz2.so.1.0.4
7fadf1c2a000-7fadf1c2c000 rw-p 0000e000 fe:04 1147                       
/lib/libbz2.so.1.0.4
7fadf1c2c000-7fadf1c2d000 r-xp 00000000 fe:04 400294                     
/usr/lib/imlib2/loaders/bz2.so
7fadf1c2d000-7fadf1e2d000 ---p 00001000 fe:04 400294                     
/usr/lib/imlib2/loaders/bz2.so
7fadf1e2d000-7fadf1e2e000 rw-p 00001000 fe:04 400294                     
/usr/lib/imlib2/loaders/bz2.so
7fadf1e2e000-7fadf1e36000 r-xp 00000000 fe:04 162116                     
/usr/lib/libgif.so.4.1.6
7fadf1e36000-7fadf2035000 ---p 00008000 fe:04 162116                     
/usr/lib/libgif.so.4.1.6
7fadf2035000-7fadf2036000 rw-p 00007000 fe:04 162116                     
/usr/lib/libgif.so.4.1.6
7fadf2036000-7fadf2038000 r-xp 00000000 fe:04 400295                     
/usr/lib/imlib2/loaders/gif.so
7fadf2038000-7fadf2237000 ---p 00002000 fe:04 400295                     
/usr/lib/imlib2/loaders/gif.so
7fadf2237000-7fadf2238000 rw-p 00001000 fe:04 400295                     
/usr/lib/imlib2/loaders/gif.so
7fadf2238000-7fadf224c000 r-xp 00000000 fe:04 218684                     
/usr/lib/libid3tag.so.0.3.0
7fadf224c000-7fadf234b000 ---p 00014000 fe:04 218684                     
/usr/lib/libid3tag.so.0.3.0
7fadf234b000-7fadf234e000 rw-p 00013000 fe:04 218684                     
/usr/lib/libid3tag.so.0.3.0
7fadf234e000-7fadf2351000 r-xp 00000000 fe:04 400296                     
/usr/lib/imlib2/loaders/id3.so
7fadf2351000-7fadf2550000 ---p 00003000 fe:04 400296                     
/usr/lib/imlib2/loaders/id3.so
7fadf2550000-7fadf2551000 rw-p 00002000 fe:04 400296                     
/usr/lib/imlib2/loaders/id3.so
7fadf2551000-7fadf2553000 r-xp 00000000 fe:04 400297                     
/usr/lib/imlib2/loaders/jpeg.so
7fadf2553000-7fadf2752000 ---p 00002000 fe:04 400297                     
/usr/lib/imlib2/loaders/jpeg.so
7fadf2752000-7fadf2753000 rw-p 00001000 fe:04 400297                     
/usr/lib/imlib2/loaders/jpeg.so
7fadf2753000-7fadf2756000 r-xp 00000000 fe:04 400298                     
/usr/lib/imlib2/loaders/lbm.so
7fadf2756000-7fadf2955000 ---p 00003000 fe:04 400298                     
/usr/lib/imlib2/loaders/lbm.so
7fadf2955000-7fadf2956000 rw-p 00002000 fe:04 400298                     
/usr/lib/imlib2/loaders/lbm.so
7fadf2956000-7fadf2959000 r-xp 00000000 fe:04 400299                     
/usr/lib/imlib2/loaders/png.so
7fadf2959000-7fadf2b58000 ---p 00003000 fe:04 400299                     
/usr/lib/imlib2/loaders/png.so
7fadf2b58000-7fadf2b59000 rw-p 00002000 fe:04 400299                     
/usr/lib/imlib2/loaders/png.so
7fadf2b59000-7fadf2b5c000 r-xp 00000000 fe:04 400300                     
/usr/lib/imlib2/loaders/pnm.so
7fadf2b5c000-7fadf2d5b000 ---p 00003000 fe:04 400300                     
/usr/lib/imlib2/loaders/pnm.so
7fadf2d5b000-7fadf2d5c000 rw-p 00002000 fe:04 400300                     
/usr/lib/imlib2/loaders/pnm.so
7fadf2d5c000-7fadf2d5e000 r-xp 00000000 fe:04 400301                     
/usr/lib/imlib2/loaders/tga.so
7fadf2d5e000-7fadf2f5d000 ---p 00002000 fe:04 400301                     
/usr/lib/imlib2/loaders/tga.so
7fadf2f5d000-7fadf2f5e000 rw-p 00001000 fe:04 400301                     
/usr/lib/imlib2/loaders/tga.so
7fadf2f5e000-7fadf2f81000 r-xp 00000000 fe:04 164632                     
/usr/lib/libjpeg.so.62.0.0
7fadf2f81000-7fadf3180000 ---p 00023000 fe:04 164632                     
/usr/lib/libjpeg.so.62.0.0
7fadf3180000-7fadf3181000 rw-p 00022000 fe:04 164632                     
/usr/lib/libjpeg.so.62.0.0
7fadf3181000-7fadf31e1000 r-xp 00000000 fe:04 138380                     
/usr/lib/libtiff.so.4.3.2
7fadf31e1000-7fadf33e1000 ---p 00060000 fe:04 138380                     
/usr/lib/libtiff.so.4.3.2
7fadf33e1000-7fadf33e4000 rw-p 00060000 fe:04 138380                     
/usr/lib/libtiff.so.4.3.2Aborted (core dumped)

> Make it crash. You'll have a core file. Do:
> gdb /path/to/your/compiled/awesome /path/to/core/file
> (gdb) bt full

Here it is:

#0  0x00007fadf6d19f45 in *__GI_raise (sig=<value optimized out>) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:64
        pid = <value optimized out>
        selftid = <value optimized out>
#1  0x00007fadf6d1cd80 in *__GI_abort () at abort.c:88
        act = {__sigaction_handler = {sa_handler = 0xa00000012, sa_sigaction = 
0xa00000012}, sa_mask = {__val = {140733528566000, 140733528565856, 
140733528566048, 140733528577810, 43, 140385147952808, 3, 140733528566058, 6, 
140385147952812, 2, 140733528566046, 2, 
              140385147943916, 1, 140385147952808}}, sa_flags = 3, sa_restorer 
= 0x7fff13fa6924}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007fadf6d4f54d in __libc_message (do_abort=2, 
    fmt=0x7fff13fa6b50 ' ' <repeats 16 times>, 
"/usr/lib/libtiff.so.4.3.2\n7fadf31e1000-7fadf33e1000 ---p 00060000 fe:04 
138380", ' ' <repeats 21 times>, 
"/usr/lib/libtiff.so.4.3.2\n7fadf33e1000-7fadf33e4000 rw-p 00060000 fe:04 
138380       "...)
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:173
        ap = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 
0x7fff13fa7280, reg_save_area = 0x7fff13fa7190}}
        ap_copy = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 
0x7fff13fa7280, reg_save_area = 0x7fff13fa7190}}
        fd = 10
        on_2 = <value optimized out>
        list = <value optimized out>
        nlist = <value optimized out>
        cp = <value optimized out>
        written = 6
#3  0x00007fadf6d58d16 in malloc_printerr (action=3, str=0x7fadf6e03898 "double 
free or corruption (out)", ptr=<value optimized out>) at malloc.c:6239
        buf = "0000000000d31f50"
        cp = 0x7fadf6df9a40 "0123456789abcdefghijklmnopqrstuvwxyz"
#4  0x00007fadf6d5d9bc in *__GI___libc_free (mem=<value optimized out>) at 
malloc.c:3738
        ar_ptr = 0x7fadf7037e60
        p = 0x6
#5  0x00000000004117df in luaA_client_gc (L=0x657240) at 
/home/jan/downloads/awesome/awesome/client.c:55
No locals.
#6  0x00007fadf792ea56 in luaD_precall (L=0x657240, func=0xe9b2d0, nresults=0) 
at ldo.c:319
        ci = 0x6
        n = <value optimized out>
        funcr = 16
#7  0x00007fadf792ef69 in luaD_call (L=0x657240, func=0xe9b2d0, nResults=0) at 
ldo.c:376
No locals.
#8  0x00007fadf793078f in GCTM (L=0x657240) at lgc.c:467
        oldah = 1 '\001'
        oldt = 4955200
        g = 0x6572f8
        o = 0xcf6980
        tm = <value optimized out>
#9  0x00007fadf7930e18 in luaC_callGCTM (L=0x657240) at lgc.c:479
No locals.
#10 0x00007fadf792e647 in luaD_rawrunprotected (L=0x657240, f=0x7fadf7935e10 
<callallgcTM>, ud=0x0) at ldo.c:116
        lj = {previous = 0x0, b = {{__jmpbuf = {6648384, 462179596762484692, 
16, 140385164040448, 0, 140385164040064, -461660674124017708, 
-490308788434759724}, __mask_was_saved = 0, __saved_mask = {__val = {0, 
140385164040064, 6637136, 140385220620044, 140381006069761, 0, 
                  140385164040064, 140385159705611, 0, 6668464, 17055024, 
140385159675269, 2, 6648384, 2, 16}}}}, status = 0}
#11 0x00007fadf7935ac0 in lua_close (L=0x657240) at lstate.c:209
No locals.
#12 0x000000000040fe86 in awesome_atexit () at 
/home/jan/downloads/awesome/awesome/awesome.c:96
        screen_nbr = 10031480
        nscreens = <value optimized out>
        setup = 0x0
#13 0x0000000000410719 in awesome_restart () at 
/home/jan/downloads/awesome/awesome/awesome.c:276
No locals.
#14 0x0000000000419b9e in event_handle_configurenotify (data=<value optimized 
out>, connection=0x668d80, ev=0xff6d20) at 
/home/jan/downloads/awesome/awesome/event.c:314
        screen_nbr = 0
        screen = 0x0
#15 0x000000000040fb4d in a_xcb_check_cb (loop=<value optimized out>, w=<value 
optimized out>, revents=<value optimized out>) at 
/home/jan/downloads/awesome/awesome/awesome.c:223
        mouse = 0xff6d20
#16 0x00007fadf7b504d1 in ev_invoke_pending () from /usr/lib/libev.so.3
No symbol table info available.
#17 0x00007fadf7b5508d in ev_loop () from /usr/lib/libev.so.3
No symbol table info available.
#18 0x0000000000410664 in main (argc=<value optimized out>, argv=<value 
optimized out>) at /home/jan/downloads/awesome/awesome/awesome.c:572
        confpath = 0x0
        xfd = <value optimized out>
        i = <value optimized out>
        screen_nbr = 1
        opt = <value optimized out>
        colors_reqs = {{{cookie_hexa = {sequence = 73}, cookie_named = 
{sequence = 73}}, alpha = 65535, color = 0x656818, is_hexa = false, has_error = 
false, colstr = 0x43e737 "black"}, {{cookie_hexa = {sequence = 74}, 
cookie_named = {sequence = 74}}, alpha = 65535, 
            color = 0x656828, is_hexa = false, has_error = false, colstr = 
0x43e73d "white"}}
        cmdlen = <value optimized out>
        xdg = {reserved = 0x657050}
        long_options = {{name = 0x43e764 "help", has_arg = 0, flag = 0x0, val = 
104}, {name = 0x43e769 "version", has_arg = 0, flag = 0x0, val = 118}, {name = 
0x43e771 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x43e778 
"check", has_arg = 0, flag = 0x0, val = 107}, {
            name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
        xio = {active = 1, pending = 1, priority = 0, data = 0x0, cb = 0x40f4f0 
<a_xcb_io_cb>, next = 0x0, fd = 6, events = 1}
        xcheck = {active = 1, pending = 0, priority = 0, data = 0xa, cb = 
0x40fb30 <a_xcb_check_cb>}
        a_refresh = {active = 1, pending = 0, priority = 0, data = 0x100000000, 
cb = 0x40fb20 <a_refresh_cb>}
        sigint = {active = 1, pending = 0, priority = 0, data = 0x7fad00000001, 
cb = 0x40fbf0 <exit_on_signal>, next = 0x0, signum = 2}
        sigterm = {active = 1, pending = 0, priority = 0, data = 0x0, cb = 
0x40fbf0 <exit_on_signal>, next = 0x0, signum = 15}
        sighup = {active = 1, pending = 0, priority = 0, data = 0x100000000, cb 
= 0x410730 <restart_on_signal>, next = 0x0, signum = 1}
        __FUNCTION__ = "main"
        sa = {__sigaction_handler = {sa_handler = 0x40fbc0 <signal_fatal>, 
sa_sigaction = 0x40fbc0 <signal_fatal>}, sa_mask = {__val = {0 <repeats 16 
times>}}, sa_flags = 0, sa_restorer = 0}
        xtest_query = <value optimized out>
        xmapping_cookie = <value optimized out>


>From this, it looks like the unconditional call to
xcb_get_wm_protocols_reply_wipe(&c->protocols) in client.c, line 55, is
the problem. This gets expanded to just a free(&c->protocols->_reply). So
if _reply is not initialized or already freed, this call is not correct.

I don't know awesome or xcb well enough to see how to fix this. But
hopefully this is enough information for one of you to spot and squash the
bug.

Regards,
Jan

-- 
To unsubscribe, send mail to [email protected].

Reply via email to