May 09, 2003 using Lua | ||||
---|---|---|---|---|
| ||||
Hi, Does anyone have compile/use Lua-5.0 package with DMC ? When compiling Lua with switches (-o or -o+all), I think the compiler(beta v834) produces wrong code (win32 code). It's fine without optimization and with other compilers. I can't reproduce the problem outside Lua. so the 'smallest exemples', it's not that small :-( http://www.sky3d.com/bug1.zip (~82k) Only need to unzip to a directory and run smake. The problem lies in file lvm.c, line 328, function luaV_concat. /*--- begin code ---*/ while (n < total && tostring(L, top-n-1)) { /* collect total length */ tl += tsvalue(top-n-1)->tsv.len; n++; } /*--- end code ---*/ tl compute the length of all strings, but in the 'while' compiled code, tl don't have the correct value. i.e., the code loops the same amount of times and in the same manner as in the unoptimized code, but at exit, the tl value isn't the same. tl is not in memory. I think tl is assign to a register, but none have the correct tl value inside the loop. as result, the destination string will be allocate with the wrong size value. (luaZ_openspace will call realloc(NULL, tl)) /*--- begin code ---*/ buffer = luaZ_openspace(L, &G(L)->buff, tl); tl = 0; for (i=n; i>0; i--) { /* concat all strings */ size_t l = tsvalue(top-i)->tsv.len; memcpy(buffer+tl, svalue(top-i), l); tl += l; } /*--- end code --*/ and will write pass end of this buffer, corrupting the heap and crash the any program, down the road. Looks like a register allocation / assignment problem, it's very hard to reproduce the register pressure up to this point in source code, to isolate no a very small example. any help ? Thanks. Eduardo Nunes edfpn@hotmail.com |
May 12, 2003 Re: using Lua | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eduardo Nunes | Could you please notify me, too, if this gets settled? (I compiled Lua 5.0 with DMC but not run it much yet.) Thanks, Sz. "Eduardo Nunes" <edfpn@hotmail.com> wrote in message news:b9fv71$2uc5$1@digitaldaemon.com... > Hi, > > Does anyone have compile/use Lua-5.0 package with DMC ? > > When compiling Lua with switches (-o or -o+all), I think the compiler(beta > v834) > produces wrong code (win32 code). |
Copyright © 1999-2021 by the D Language Foundation