lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 07.11.2011 16:25, Benoit Germain wrote:
2011/11/7 Philipp Janda<siffiejoe@gmx.net>:
This is for the source rock from the luarocks repository. A current download
from github gives some more warnings and no assertion failure during 'make
test', but it freezes instead:
*** glibc detected *** /usr/bin/lua5.1: double free or corruption (!prev):
0x096eaab8 ***


Thanks for the report.
I'll update the code soon to get rid of all those warnings. Is it
possible to have a callstack to see what's wrong about this double
free? It doesn't seem to exist on win32.

Well, not from glibc. It freezes before printing the stack trace:
make irayo_closure
make[1]: Entering directory `/home/siffiejoe/downloads/LuaLanes-lanes-0e9d9c3' LUA_CPATH="./src/?.so" LUA_PATH="./src/?.lua;./tests/?.lua" /usr/bin/lua5.1 tests/irayo_closure.lua
using the closure
true
Killed 1 lane(s) at process end.
*** glibc detected *** /usr/bin/lua5.1: double free or corruption (!prev): 0x08ddacb0 ***
======= Backtrace: =========

It doesn't always crash on the same test (so far I have seen crashes on 'irayo_closure' and 'func_is_string'). When using valgrind I only get errors for the 'atexit' test. Interesting part of log is attached.

HTH,
Philipp

==8436== Memcheck, a memory error detector
==8436== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==8436== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info
==8436== Command: /usr/bin/lua5.1 tests/atexit.lua
==8436== 
Killed 16 lane(s) at process end.
==8436== Thread 3:
==8436== Invalid read of size 4
==8436==    at 0x4033223: selfdestruct_remove (lanes.c:1005)
==8436==    by 0x4033BF4: lane_main (lanes.c:1479)
==8436==    by 0x4694D30: start_thread (pthread_create.c:304)
==8436==    by 0x41800CD: clone (clone.S:130)
==8436==  Address 0x42c0af0 is 96 bytes inside a block of size 100 free'd
==8436==    at 0x4027C02: free (vg_replace_malloc.c:366)
==8436==    by 0x40333D6: selfdestruct_atexit (lanes.c:1154)
==8436==    by 0x804F1FD: luaD_precall (ldo.c:319)
==8436==    by 0x804F597: luaD_call (ldo.c:376)
==8436==    by 0x8050BAA: GCTM (lgc.c:467)
==8436==    by 0x80510FE: luaC_callGCTM (lgc.c:479)
==8436==    by 0x40C7112: (below main) (libc-start.c:226)
==8436== 
==8436== Invalid free() / delete / delete[]
==8436==    at 0x4027C02: free (vg_replace_malloc.c:366)
==8436==    by 0x4033BFF: lane_main (lanes.c:1480)
==8436==    by 0x4694D30: start_thread (pthread_create.c:304)
==8436==    by 0x41800CD: clone (clone.S:130)
==8436==  Address 0x42c0a90 is 0 bytes inside a block of size 100 free'd
==8436==    at 0x4027C02: free (vg_replace_malloc.c:366)
==8436==    by 0x40333D6: selfdestruct_atexit (lanes.c:1154)
==8436==    by 0x804F1FD: luaD_precall (ldo.c:319)
==8436==    by 0x804F597: luaD_call (ldo.c:376)
==8436==    by 0x8050BAA: GCTM (lgc.c:467)
==8436==    by 0x80510FE: luaC_callGCTM (lgc.c:479)
==8436==    by 0x40C7112: (below main) (libc-start.c:226)
==8436== 
==8436== 
==8436== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==8436==  Access not within mapped region at address 0x404224C
==8436==    at 0x469B61B: __lll_lock_wait (lowlevellock.S:145)
==8436==    by 0x4696F7C: _L_lock_708 (pthread_mutex_lock.c:117)
==8436==    by 0x4696DC1: pthread_mutex_lock (pthread_mutex_lock.c:61)
==8436==    by 0x418DF13: pthread_mutex_lock (forward.c:182)
==8436==    by 0x4033BF4: ???
==8436==    by 0x4694D30: start_thread (pthread_create.c:304)
==8436==    by 0x41800CD: clone (clone.S:130)
==8436==  If you believe this happened as a result of a stack
==8436==  overflow in your program's main thread (unlikely but
==8436==  possible), you can try to increase the size of the
==8436==  main thread stack using the --main-stacksize= flag.
==8436==  The main thread stack size used in this run was 16777216.
==8436== 
==8436== HEAP SUMMARY:
==8436==     in use at exit: 59,431 bytes in 849 blocks
==8436==   total heap usage: 7,334 allocs, 6,489 frees, 670,562 bytes allocated
==8436== 
==8436== LEAK SUMMARY:
==8436==    definitely lost: 0 bytes in 0 blocks
==8436==    indirectly lost: 0 bytes in 0 blocks
==8436==      possibly lost: 1,768 bytes in 13 blocks
==8436==    still reachable: 57,663 bytes in 836 blocks
==8436==         suppressed: 0 bytes in 0 blocks
==8436== Rerun with --leak-check=full to see details of leaked memory
==8436== 
==8436== For counts of detected and suppressed errors, rerun with: -v
==8436== ERROR SUMMARY: 8 errors from 2 contexts (suppressed: 36 from 13)
Killed
make[1]: *** [atexit] Error 137
make: *** [test] Error 2