• A
    Fixed critical memory leak from EVAL. · 41d31473
    antirez 提交于
    Multiple missing calls to lua_pop prevented the error handler function
    pushed on the stack for lua_pcall() to be popped before returning,
    causing a memory leak in almost all the code paths of EVAL (both
    successful calls and calls returning errors).
    
    This caused two issues: Lua leaking memory (and this was very visible
    from INFO memory output, as the 'used_memory_lua' field reported an
    always increasing amount of memory used), and as a result slower and
    slower GC cycles resulting in all the CPU being used.
    
    Thanks to Tanguy Le Barzic for noticing something was wrong with his 2.8
    slave, and for creating a testing EC2 environment where I was able to
    investigate the issue.
    41d31473
scripting.c 37.4 KB