Author Topic: FluffOS crashing on repeated hash("md5",string) use  (Read 2202 times)

Offline nfa

  • Acquaintance
  • *
  • Posts: 28
    • View Profile
FluffOS crashing on repeated hash("md5",string) use
« on: February 13, 2012, 03:56:48 pm »
Hello!

I've got 2 out of 3 boxes to crash on calculating the md5 hash of whatever. Sometime it crashes on the first calculation, sometimes it takes 6. Running it in gdb yields:
Code: [Select]
*** glibc detected *** /home/mud/sys/crash_feb12/bin/driver: corrupted double-linked list: 0x00372bb0 ***

Program received signal SIGABRT, Aborted.
0x402bbc88 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67
67      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
        in ../nptl/sysdeps/unix/sysv/linux/raise.c


Unfortunately I cannot provide valgrind logs of the machines that crash, because one of them I don't have shell access to and the other can't run valgrind due to its CPU architecture. However I can provide it on the third machine that doesn't crash, but valgrind makes a beep on each efun call nonetheless:
Code: [Select]
==3320== Invalid read of size 4
==3320==    at 0x8060EE2: int_free_svalue (interpret.c:457)
==3320==    by 0x8061775: pop_stack (interpret.c:687)
==3320==    by 0x80698CC: eval_instruction (interpret.c:3419)
==3320==    by 0x806B8EF: apply_low (interpret.c:4310)
==3320==    by 0x806BA5F: apply (interpret.c:4376)
==3320==    by 0x8078063: call_create (object.c:2039)
==3320==    by 0x806F86A: int_load_object (simulate.c:520)
==3320==    by 0x8070D72: find_object (simulate.c:1372)
==3320==    by 0x8091AEC: f_find_object (efuns_main.c:938)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806ACB2: do_catch (interpret.c:3858)
==3320==    by 0x806A422: eval_instruction (interpret.c:3692)
==3320==  Address 0x59985f0 is 8 bytes before a block of size 33 alloc'd
==3320==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
==3320==    by 0x80B9E95: hexdump (crypto.c:32)
==3320==    by 0x80BA01C: f_hash (crypto.c:73)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806B8EF: apply_low (interpret.c:4310)
==3320==    by 0x806BA5F: apply (interpret.c:4376)
==3320==    by 0x8078063: call_create (object.c:2039)
==3320==    by 0x806F86A: int_load_object (simulate.c:520)
==3320==    by 0x8070D72: find_object (simulate.c:1372)
==3320==    by 0x8091AEC: f_find_object (efuns_main.c:938)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806ACB2: do_catch (interpret.c:3858)
==3320==
==3320== Invalid read of size 2
==3320==    at 0x8060EEE: int_free_svalue (interpret.c:459)
==3320==    by 0x8061775: pop_stack (interpret.c:687)
==3320==    by 0x80698CC: eval_instruction (interpret.c:3419)
==3320==    by 0x806B8EF: apply_low (interpret.c:4310)
==3320==    by 0x806BA5F: apply (interpret.c:4376)
==3320==    by 0x8078063: call_create (object.c:2039)
==3320==    by 0x806F86A: int_load_object (simulate.c:520)
==3320==    by 0x8070D72: find_object (simulate.c:1372)
==3320==    by 0x8091AEC: f_find_object (efuns_main.c:938)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806ACB2: do_catch (interpret.c:3858)
==3320==    by 0x806A422: eval_instruction (interpret.c:3692)
==3320==  Address 0x59985f4 is 4 bytes before a block of size 33 alloc'd
==3320==    at 0x4023F50: malloc (vg_replace_malloc.c:236)
==3320==    by 0x80B9E95: hexdump (crypto.c:32)
==3320==    by 0x80BA01C: f_hash (crypto.c:73)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806B8EF: apply_low (interpret.c:4310)
==3320==    by 0x806BA5F: apply (interpret.c:4376)
==3320==    by 0x8078063: call_create (object.c:2039)
==3320==    by 0x806F86A: int_load_object (simulate.c:520)
==3320==    by 0x8070D72: find_object (simulate.c:1372)
==3320==    by 0x8091AEC: f_find_object (efuns_main.c:938)
==3320==    by 0x806A7BC: eval_instruction (interpret.c:3759)
==3320==    by 0x806ACB2: do_catch (interpret.c:3858)
==3320==
That's from loading a object looking like:
Code: [Select]
void create()
{
    hash("md5", "test");
}