|
On 11/12/2013 3:10 AM, Roberto Ierusalimschy wrote:
I have definitely seen the problem on 32-bit Linux as well. So I compile ldo.c specially in luabuild. Here is the relevant part of the lakefile: -- gcc 4.6 messes up setjmp/longjmp when optimizing local ldo = c.group{LDO,defines=defs,args=def, flags=choose(CC=='gcc','-fno-omit-frame-pointer') } (point being that only this file needs the flag, and it may be GCC version specific)I've been sticking to Lua 5.1 on MinGW32...This seems to be a bug in the C compiler; apparently it has nothing to do with Lua itself. Lua 5.1 should present the same problem. (Actually the bug is not in the compiler itself, but in the implementation of longjmp/setjmp.)
I just missed out, my installed MinGW compilers went from gcc 4.5.2 to gcc 4.7.1.
Patched I think by Kai Tietz [1]. Omitting the frame pointer caused a random value to be saved for %ebp by setjmp(). Didn't see any bug reports beyond gcc 4.6.x.
[1] http://gcc.gnu.org/ml/gcc/2011-10/msg00358.html -- Cheers, Kein-Hong Man (esq.) Kuala Lumpur, Malaysia