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)
>