[Tarantool-patches] [PATCH luajit v2] test: fix flaky OOM error frame test

Sergey Bronnikov sergeyb at tarantool.org
Sat Nov 18 19:52:53 MSK 2023


Hello, Max

LGTM with a question below


On 11/9/23 16:45, Maksim Kokryashkin wrote:
> This test could do allocation outside of the protected frame,
> which could result in an uncaught OOM and test failure. This
> patch adds extra `collectgarbage` calls to the test to avoid
> such situations.
> ---
> Changes in v2:
> - Fixed comments as per review by Sergey Kaplun
> Branch: https://github.com/tarantool/luajit/tree/fckxorg/lj-1004-fix-flaky
> PR: https://github.com/tarantool/tarantool/pull/9318
>   test/tarantool-tests/lj-1004-oom-error-frame.test.lua | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/test/tarantool-tests/lj-1004-oom-error-frame.test.lua b/test/tarantool-tests/lj-1004-oom-error-frame.test.lua
> index 3be6b555..2ddb5765 100644
> --- a/test/tarantool-tests/lj-1004-oom-error-frame.test.lua
> +++ b/test/tarantool-tests/lj-1004-oom-error-frame.test.lua
> @@ -10,6 +10,8 @@ test:plan(2)
>
>   local testoomframe = require('testoomframe')
>
> +collectgarbage()

Probably it is obvious, but I don't get it.

Usually for forcing garbage collecting one need call `collectgarbage()` 
two times:

for mark and sweep. You call it single time, why?


> +
>   local anchor_memory = {} -- luacheck: no unused
>   local function eatchunks(size)
>     while true do
> @@ -34,6 +36,11 @@ local function chomp()
>   end
>
>   local st, err = pcall(chomp)
> +
> +-- Prevent OOM outside of the protected frame.
> +anchor_memory = nil
> +collectgarbage()
Ditto.
> +
>   test:ok(st == false, 'on-trace error handled successfully')
>   test:like(err, 'not enough memory', 'error is OOM')
>   test:done(true)
> --
> 2.39.3 (Apple Git-145)
>


More information about the Tarantool-patches mailing list