Problems when porting CorsixTH to Lua 5.4

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problems when porting CorsixTH to Lua 5.4

Stephen E. Baker
Hello,

I've been trying to add compatibility with Lua 5.4 to the open source game engine CorsixTH. My patch to date can be seen here:

https://github.com/TheCycoONE/CorsixTH/commit/e78df0eabb7253fa0b98e1dbbb49bf4a62329163

This version still works with 5.3 (and 5.2, 5.1, and LuaJIT 2) but with 5.4 I am getting:

C stack overflow
stack traceback:
        [C]: in function 'coroutine.yield'
        /home/stephen/corsixth/CorsixTH/Lua/app.lua:1011: in function </home/stephen/corsixth/CorsixTH/Lua/app.lua:1006>

Many other things don't seem to be functioning correctly either. It's admittedly a large code base, but I don't believe we are impacted by the other listed incompatibilities.

Debugging shows that the stack size is consistently the same size as the nres of lua_resume. The error always happens after 195 resume calls; regardless of whether those are events, frames, or timers.

I'm at a bit of a loss on how to debug the problem further, or where to look/why is the stack size growing in Lua 5.4 when it wasn't in earlier versions?
Reply | Threaded
Open this post in threaded view
|

Re: Problems when porting CorsixTH to Lua 5.4

Stephen E. Baker
So it goes - work on a problem for days, and then just after reaching out the solution comes to me.

I think the problem was a misunderstanding of the from parameter in lua_resume which was formerly harmless. Changing that value from the coroutine itself to NULL fixes the problem - this is being resumed by sdl events not a coroutine.

I'm still hitting some other lua 5.4 specific issues but I will continue to evaluate them on a case by case.

Thanks.

Stephen E. Baker

On Sat, Jul 4, 2020 at 10:50 PM Stephen E. Baker <[hidden email]> wrote:
Hello,

I've been trying to add compatibility with Lua 5.4 to the open source game engine CorsixTH. My patch to date can be seen here:

https://github.com/TheCycoONE/CorsixTH/commit/e78df0eabb7253fa0b98e1dbbb49bf4a62329163

This version still works with 5.3 (and 5.2, 5.1, and LuaJIT 2) but with 5.4 I am getting:

C stack overflow
stack traceback:
        [C]: in function 'coroutine.yield'
        /home/stephen/corsixth/CorsixTH/Lua/app.lua:1011: in function </home/stephen/corsixth/CorsixTH/Lua/app.lua:1006>

Many other things don't seem to be functioning correctly either. It's admittedly a large code base, but I don't believe we are impacted by the other listed incompatibilities.

Debugging shows that the stack size is consistently the same size as the nres of lua_resume. The error always happens after 195 resume calls; regardless of whether those are events, frames, or timers.

I'm at a bit of a loss on how to debug the problem further, or where to look/why is the stack size growing in Lua 5.4 when it wasn't in earlier versions?