lumen icon indicating copy to clipboard operation
lumen copied to clipboard

Does not work with lua 5.2.3

Open srdgame opened this issue 11 years ago • 7 comments

Hi,

It does not work with lua 5.2.3 in my laptop, (Ubuntu Gnome 14.04 amd64). It works with luajit from openresty. Below is the result running test.lua:

cch@cch-NV47H:~/mycode/lua/lumen/tests$ lua test.lua A says: going to sleep couple seconds B says: waiting for a A to die 0 says: waiting for a 'ev' from A cch@cch-NV47H:~/mycode/lua/lumen/tests$ /usr/local/openresty/luajit/bin/luajit-2.1.0-alpha test.lua A says: going to sleep couple seconds B says: waiting for a A to die 0 says: waiting for a 'ev' from A A says: emittig 'ev, data!' 0 says: received a 'ev' from A, with: data! 0 says: going to kill A B says: hear that A died B says: going to error with message 'xxx' 2014/05/08 18:22:46 SCHED-WARNING: table: 0x406949a0 die on error, returning 1 parameters: test.lua:25: xxx 0 says: finishing, returning data! cch@cch-NV47H:~/mycode/lua/lumen/tests$

srdgame avatar May 08 '14 10:05 srdgame

sched.run(function() local A=sched.run(function() print("A says: going to sleep couple seconds") sched.sleep(0)

By changing the sleep(2) to sleep(0) the programing runs well with lua 5.2.3.

srdgame avatar May 08 '14 11:05 srdgame

Set the log level to ALL

lua cch@cch-NV47H:~/mycode/lua/lumen/tests$ lua test.lua A says: going to sleep couple seconds 2014/05/08 19:09:04 SCHED-DETAIL: task table: 0x16cd5d0 created waitd table: 0x16e73e0 B says: waiting for a A to die 2014/05/08 19:09:04 SCHED-DETAIL: task table: 0x16d65a0 created waitd table: 0x16d79f0 0 says: waiting for a 'ev' from A 2014/05/08 19:09:04 SCHED-DETAIL: task table: 0x16c53f0 created waitd table: 0x16df620 2014/05/08 19:09:04 SCHED-INFO: Started. cch@cch-NV47H:~/mycode/lua/lumen/tests$ /usr/local/openresty/luajit/bin/luajit-2.1.0-alpha test.lua A says: going to sleep couple seconds 2014/05/08 19:09:17 SCHED-DETAIL: task table: 0x40ce5050 created waitd table: 0x40ce5190 B says: waiting for a A to die 2014/05/08 19:09:17 SCHED-DETAIL: task table: 0x40ce5dc0 created waitd table: 0x40ce61b0 0 says: waiting for a 'ev' from A 2014/05/08 19:09:17 SCHED-DETAIL: task table: 0x40ce4a98 created waitd table: 0x40ce5de8 2014/05/08 19:09:17 SCHED-INFO: Started. A says: emittig 'ev, data!' 2014/05/08 19:09:19 SCHED-DEBUG: task table: 0x40ce5050 emitting event ev with 1 parameters 0 says: received a 'ev' from A, with: data! 0 says: going to kill A 2014/05/08 19:09:19 SCHED-DETAIL: killing table: 0x40ce5050 from table: 0x40ce4a98 B says: hear that A died B says: going to error with message 'xxx' 2014/05/08 19:09:19 SCHED-WARNING: table: 0x40ce5dc0 die on error, returning 1 parameters: test.lua:25: xxx 0 says: finishing, returning data! 2014/05/08 19:09:19 SCHED-DETAIL: table: 0x40ce4a98 returning 1 parameters 2014/05/08 19:09:19 SCHED-INFO: Finished. cch@cch-NV47H:~/mycode/lua/lumen/tests$

srdgame avatar May 08 '14 11:05 srdgame

The issue is from the lib/idle.lua

Below is the fix.

local function unix_idle (t)

local ret = os.execute('sleep '..t) 
if _VERSION =='Lua 5.1' and ret ~= 0 
or (_VERSION =='Lua 5.2' or _VERSION == "Lua 5.3") and ret ~= true then 
    os.exit() 
end

end

srdgame avatar May 08 '14 11:05 srdgame

or Just remove the (_VERSION =='Lua 5.2' or _VERSION == "Lua 5.3")

srdgame avatar May 08 '14 11:05 srdgame

Thank you, commited.

xopxe avatar May 08 '14 15:05 xopxe

I have the same problem with LuaJIT as installed from torch (currently LuaJIT 2.1.0-beta1) on linux, which also reports _VERSION=='Lua 5.1'.

The ugly but explicit version fix following the above is:

    local ret = os.execute('sleep '..t)
    if _VERSION =='Lua 5.1' and type(jit) ~= 'table' and ret ~= 0
    or _VERSION ~='Lua 5.1' and ret ~= true
    or _VERSION =='Lua 5.1' and type(jit) == 'table' and ret ~= true then
            os.exit()
    end

but from my limited testing it seems you can just do:

    local ret = os.execute('sleep '..t)
    if ret == 0 or ret == true then
        return
    end
    os.exit()

The second form works on Lua 5.2 on mac OSX and linux/LuaJIT as above.

rob-miller avatar Apr 04 '16 14:04 rob-miller

Thanks, I pushed your second option (and left the first commented as documentation)

xopxe avatar Apr 04 '16 15:04 xopxe