У меня есть небольшая программа на Си. На FreeBSD все работало замечательно. Попробовал скомпилить в бубунте - после запуска выдает
*** glibc detected *** /home/dima/calculus/calculus: double free or corruption (out): 0x08be0658 ***
(gdb) backtrace
#0 0xb80b7430 in __kernel_vsyscall ()
#1 0xb7f32880 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7f34248 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7f7010d in ?? () from /lib/tls/i686/cmov/libc.so.6
#4 0xb7f763f4 in ?? () from /lib/tls/i686/cmov/libc.so.6
#5 0xb7f78456 in free () from /lib/tls/i686/cmov/libc.so.6
#6 0xb7f66004 in fclose () from /lib/tls/i686/cmov/libc.so.6
#7 0x08048ee5 in main () at calculus.c:129
Т.е. ошибка при закрытии файла. Притом открывается и записывается все нормально. А остановиться не может =)
Гугл посоветовал мне сделать export MALLOC_CHECK_=0 и это помогло. Но пахнет очень грязным хаком. Почему весь софт работает нормально (думаю там fclose используется часто), а моя крошечная программа отказывается?