lua-users home
lua-l archive

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


Large amounts of (non tail) recursion runs out of memory eventually. But
not necessarily in the same place with Valgrind.

Its not an issue.

Justin


On Wed, 2011-03-02 at 13:07 -0500, Henk Boom wrote:
> Hi, I just tried compiling LuaJIT2, turning on debugging symbols as
> well as asserts and valgrind support in the Makefile. I haven't
> managed to get it to work reliably yet, and I feel like I must be
> doing something wrong to hit problems so quickly in a program that
> many people are using without problem.
> 
> The quick summary is that it seems to work when run in valgrind, but
> not outside. I am using Ubuntu 10.04 on an x84_64 intel processor, and
> get the same results with beta5, which is the only other version I
> have installed. Here are the full results:
> 
> ----------------------------------------
> henk@invincible-spell:~$ cat badfib.lua
> function badfib(n)
>   return n < 2 and n or badfib(n-1) + badfib(n-2)
> end
> 
> print(badfib(tonumber((...))))
> 
> ----------------------------------------
> henk@invincible-spell:~$ luajit-2.0.0-beta6 badfib.lua 15
> 610
> 
> ----------------------------------------
> henk@invincible-spell:~$ luajit-2.0.0-beta6 badfib.lua 16
> Segmentation fault
> 
> ----------------------------------------
> henk@invincible-spell:~$ lua badfib.lua 16
> 987
> 
> ----------------------------------------
> henk@invincible-spell:~$ gdb luajit-2.0.0-beta6
> GNU gdb (GDB) 7.1-ubuntu
> Copyright (C) 2010 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /usr/local/bin/luajit-2.0.0-beta6...done.
> (gdb) run badfib.lua 16
> Starting program: /usr/local/bin/luajit-2.0.0-beta6 badfib.lua 16
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000394cffed in ?? ()
> (gdb) bt
> #0  0x00000000394cffed in ?? ()
> #1  0x0000000040000f18 in ?? ()
> #2  0x000000000041f9e0 in lj_vm_hotcall ()
> #3  0x000000000040c2aa in lua_pcall (L=0x40000378,
>     nargs=<value optimized out>, nresults=-1, errfunc=<value optimized out>)
>     at lj_api.c:1027
> #4  0x0000000000403ec6 in docall (L=0x40000378, narg=1, clear=0)
>     at luajit.c:120
> #5  0x0000000000404eb4 in handle_script (L=0x40000378) at luajit.c:284
> #6  pmain (L=0x40000378) at luajit.c:488
> #7  0x000000000041dfa9 in lj_BC_FUNCC ()
> #8  0x000000000040b6d2 in lua_cpcall (L=0xfffffffb40007c38, func=0x400082e0,
>     ud=0x400082c0) at lj_api.c:1049
> #9  0x0000000000403dff in main (argc=3, argv=0x7fffffffe2c8) at luajit.c:516
> 
> ----------------------------------------
> henk@invincible-spell:~$ valgrind luajit-2.0.0-beta6 badfib.lua 16
> ==9115== Memcheck, a memory error detector
> ==9115== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
> ==9115== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for
> copyright info
> ==9115== Command: luajit-2.0.0-beta6 badfib.lua 16
> ==9115==
> 987
> ==9115==
> ==9115== HEAP SUMMARY:
> ==9115==     in use at exit: 0 bytes in 0 blocks
> ==9115==   total heap usage: 1 allocs, 1 frees, 568 bytes allocated
> ==9115==
> ==9115== All heap blocks were freed -- no leaks are possible
> ==9115==
> ==9115== For counts of detected and suppressed errors, rerun with: -v
> ==9115== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
> 
> ----------------------------------------
> 
> Please let me know if there is more useful information I can provide.
> 
>     henk
>