The real challenge here is that if you "mess up" and get in an infinited JITted loop, there's nothing to be done about it. I think the only way to do this is by using setitimer() w/ ITIMER_PROF to interrupt the thread and deal with it within the signal handler. The bad part about this is that I haven't figured out how to get LuaJIT to unwind and cleanup cleanly. On Wed, Nov 5, 2014 at 12:47 PM, Александр Киранов <xhaskx@xxxxxxxxx> wrote: > Thanks everybody for proposals. > > Seems I found a solution - call lua_sethook() from different thread, if I > decided to terminate script execution (measured big CPU time consumption). > It's working in usual lua implementation. > But it's not working in luajit - hook is not called immediately after > lua_sethook() call in other thread, only at script end. > Example: http://pastebin.com/HdnfVQKB > > Main question is: is there other way to interrupt lua_State from other > thread? Consistency of interrupted lua_State is not necessary but > preferred, I only need return from luaL_dostring() in main thread with > non-zero result. > > > > > --- > С уважением, > Киранов Александр > > 2014-11-05 14:02 GMT+03:00 Victor Bombi <sonoro@xxxxxxxxxxxxxx>: > >> May be using luaLanes and lane priorities? >> I have not tested in linux but only on win32 >> >> ----- Original Message ----- >> *From:* Alexander Altshuler <altexy@xxxxxxxxx> >> *To:* luajit@xxxxxxxxxxxxx >> *Sent:* Wednesday, November 05, 2014 10:54 AM >> *Subject:* Re: luajit state CPU time limit >> >> On 4 November 2014 22:47, Javier Guerra Giraldez <javier@xxxxxxxxxxx> >> wrote: >> >>> On Tue, Nov 4, 2014 at 2:34 PM, Александр Киранов <xhaskx@xxxxxxxxx> >>> wrote: >>> > So, when some lua_State consumed too many CPU I need to know it and >>> handle >>> > it on LUA or on C level. >>> >>> >>> better handle it at the OS level. Linux includes many different tools >>> to limit resources. LXC and cgroups spring to mind. I would start >>> here: https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt >>> >>> >> But you will have to decompose your application into some processes to >> get proper control granularity. >> >> Regards >> Alexander >> >> > -- Theo Schlossnagle http://omniti.com/is/theo-schlossnagle