Running melt in the debugger and waiting for it to
crash gives...

    /lib/i386-linux-gnu/libc.so.6(+0x6738a)[0xb7dd438a]
    /lib/i386-linux-gnu/libc.so.6(+0x6dfc7)[0xb7ddafc7]
    /lib/i386-linux-gnu/libc.so.6(+0x6e806)[0xb7ddb806]
    /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x18)[0xb773da28]
    
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev+0x25)[0xb77d9505]
    /lib/i386-linux-gnu/libc.so.6(+0x2e7ab)[0xb7d9b7ab]
    /lib/i386-linux-gnu/libc.so.6(+0x2e811)[0xb7d9b811]
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0x102)[0xb7d85292]
    /usr/bin/melt(+0x2d26)[0x80002d26]

Maybe the last line shows an informative offset
into melt. (0x80002d26).

I checked the package build log for code offsets.

    http://clang.debian.net/logs/2017-08-20/mlt_6.4.1-5_unstable_clang.log

No luck.

Worse, it says 434 packages are required to
compile melt.

That looks hard.

So I tried something different: typing "bt", for "back trace".

It reported

    (gdb) bt
    #0  0xffffffff in __kernel_vsyscall ()
    #1  0xffffffff in __GI_raise (set=0xbffff290) at 
../sysdeps/unix/sysv/linux/nptl-signals.h:79
    #2  0xffffffff in __GI_raise (sig=6) at 
../sysdeps/unix/sysv/linux/raise.c:48
    #3  0xffffffff in __GI_abort () at abort.c:89
    #4  0xffffffff in __libc_message (do_abort=<optimized out>, fmt=<optimized 
out>) at ../sysdeps/posix/libc_fatal.c:175
    #5  0xffffffff in malloc_printerr (action=<optimized out>, str=0xb7ece35c 
"double free or corruption (fasttop)", ptr=<optimized out>, ar_ptr=0xb7f20780 
<main_arena>) at malloc.c:5049
    #6  0xffffffff in _int_free (av=0xb7f20780 <main_arena>, p=0x801ad508, 
have_lock=0) at malloc.c:3905
    #7  0xffffffff in operator delete(void*) () at 
/usr/lib/i386-linux-gnu/libstdc++.so.6
    #8  0xffffffff in std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::~basic_string() () at 
/usr/lib/i386-linux-gnu/libstdc++.so.6
    #9  0xffffffff in __run_exit_handlers (status=0, listp=0xb7f203dc 
<__exit_funcs>, run_list_atexit=true, run_dtors=true) at exit.c:83
    #10 0xffffffff in __GI_exit (status=0) at exit.c:105
    #11 0xffffffff in __libc_start_main (main=0x80001960 <main>, argc=9, 
argv=0xbffff854, init=0x80004160 <__libc_csu_init>, fini=0x800041c0 
<__libc_csu_fini>, rtld_fini=0xb7feb070 <_dl_fini>, stack_end=0xbffff84c) at 
../csu/libc-start.c:325
    #12 0xffffffff in _start ()

Note: There's no "melt" or "mlt" in any stack
frame.

Frame number 9 mentions "atexit", which suggests
to me that glibc code is crashing when it tries to
execute a function specified in melt before it
exited.

That suggests to me melt's stack is gone.

And of no use.

If it weren't for bad luck, I'd have no luck at
all.

Certainly, valgrind will find the bug.

Next time: Or will it...?

So,
Kingsley

-- 
Time is the fire in which we all burn.

Reply via email to