lua-users home
lua-l archive

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


We are using the luaproc idea ( to implement a true multi-threading application using LUA. Up to now, it was working perfectly with LUA 5.1 and luaJIT 2.0-beta6.

In order to stay inline with the latest LUAJIT developement, i tested our application with LUAJIT2.0 beta8, and we are facing an issue (bug ?).

The symptoms :
  • luaproc makes extensive use of lua_yield/lua_resume when exchanging messages thru channels.
  • After a few seconds of message exchanges, the application failed on a CHANNEL.receive call
  • I have printed the stack using the debug interface, but it does not display anything interesting, apart that it fails in a CHANNEL.receive
  • Internally, the CHANNEL.receive fails because the C lua_resume() function returns LUA_ERRRUN.
  • This behavior does not appear on Windows 32 bits
  • This behavior does not appear on Linux 64 bits when i switch off the LUAJIT (ie -DLUAJIT_DISABLE_JIT)
  • When i activate the assert mode WITH the LUAJIT activated, i get the following assert message :
    • lj_api.c : 41 index2adre: Assertion 'idx != 0 && -idx <= L->top - L->base' failed.
  • The same behavior happens also with luaJIT beta7.
Any idea or hint on that ?

Rgds, S. FABRE

Sylvain FABRE
Fixe: 09 72 11 30 24
Mobile: 06 30 12 72 34
Fax : 09 72 11 10 71