[Oisf-devel] LuaJIT running out of memory causing Suricata crashes?
Chris Wakelin
c.d.wakelin at reading.ac.uk
Fri Dec 6 16:54:00 UTC 2013
On 04/12/13 20:17, Chris Wakelin wrote:
> On 04/12/13 12:17, Chris Wakelin wrote:
>> On 04/12/13 12:16, Victor Julien wrote:
>>> On 12/04/2013 01:13 PM, Victor Julien wrote:
>>>> On 12/04/2013 12:56 PM, Victor Julien wrote:
>>>>> On 12/04/2013 12:37 PM, Chris Wakelin wrote:
>>>>>>> [32578] 4/12/2013 -- 11:18:50 - (detect-luajit.c:281) <Info> (DetectLuajitMatchBuffer) -- failed to run script: not enough memory
>>>>>> I guess we could add more checks to the Lua scripts to avoid the
>>>>>> zlib/xor errors, which occur all the time, but I think they're probably
>>>>>> not significant. Is there a way we could prevent or at least debug the
>>>>>> "not enough memory" errors which are presumably what causes Suricata to
>>>>>> crash?
>>>>>
>>>>> Maybe you can try inserting a "return 0" on line 282, so:
>>>>>
>>>>> int retval = lua_pcall(tluajit->luastate, 1, 1, 0);
>>>>> if (retval != 0) {
>>>>> SCLogInfo("failed to run script: %s",
>>>>> lua_tostring(tluajit->luastate, -1));
>>>>> return 0;
>>>>> }
>>>>>
>>>>
>>>> Actually, please ignore this. I found that the lua state isn't cleared
>>>> properly, will send a test patch in a few minutes.
>>>>
>>>
>>> Can you try the attached patch?
>>>
>>
>> OK
>>
>>> What kind of process exit code are you getting?
>>>
>>
>> It's running in daemon mode, so difficult to say. I guess I'll try
>> running it standalone.
>>
>> Best Wishes,
>> Chris
>>
>
> Standalone with the patch crashed with this on STDOUT/STDERR
>
> PANIC: unprotected error in call to Lua API (not enough memory)
>
> The exit code was 1. The last line of suricata.log was
>> [24028] 4/12/2013 -- 19:49:47 - (detect-luajit.c:281) <Info> (DetectLuajitMatchBuffer) -- failed to run script: not enough memory
>
> Now trying (nearly) git master!
>
> Best Wishes,
> Chris
>
I'm still getting crashes on git master - perhaps not so many, e.g.:
> [9392] 6/12/2013 -- 15:37:07 - (detect-luajit.c:290) <Info> (DetectLuajitMatchBuffer) -- failed to run script: not enough memory
Is it worth putting in that "return 0;" after "SCLogInfo("failed to run
script: %s", lua_tostring(tluajit->luastate, -1));" again?
Best Wishes,
Chris
--
--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-
Christopher Wakelin, c.d.wakelin at reading.ac.uk
IT Services Centre, The University of Reading, Tel: +44 (0)118 378 2908
Whiteknights, Reading, RG6 6AF, UK Fax: +44 (0)118 975 3094
More information about the Oisf-devel
mailing list