You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test/test-run.py --force --builddir ../build-dev box-tap/session.test
======================================================================================
WORKR TEST RARAMS RESULT
--------------------------------------------------------------------------------------
[001] box-tap/session.test.lua [ pass ]
--------------------------------------------------------------------------------------
Yet the helper server panics as we planned:
$ grep AAAA /tmp/t/001_box-tap/tiny.log
2024-07-01 11:04:13.672 [50651] main F> AAAAAAA!!!!
2024-07-01 11:04:13.672 [50651] main F> AAAAAAA!!!!
In particular such behaviour may hide memory leak issues under ASAN CI.
I tried to prepare a patch for the issue and found the cause. The thing is gevent does not work properly together with subprocess and multiprocess packages. In particular in test-run on helper server error exit code we actually get 0 error code from subprocess.Popen.returncode in
with gevent.Popen. Unlike to subprocess.popen it tracks SIGCHILD signal and reaps ALL processes when receive it. In particular it reaps helper server process. So when we poll for it exit code we cannot find the process and subprocess decides to just report success.
It hides memory leak/unexpected panic/crashes/failed assertions.
Repro. Let's make next changes:
The test passes:
Yet the helper server panics as we planned:
In particular such behaviour may hide memory leak issues under ASAN CI.
I tried to prepare a patch for the issue and found the cause. The thing is
gevent
does not work properly together withsubprocess
andmultiprocess
packages. In particular intest-run
on helper server error exit code we actually get 0 error code fromsubprocess.Popen.returncode
intest-run/lib/tarantool_server.py
Lines 969 to 972 in 240cdea
In more details we run main server:
test-run/lib/app_server.py
Lines 34 to 44 in 240cdea
with
gevent.Popen
. Unlike tosubprocess.popen
it tracksSIGCHILD
signal and reaps ALL processes when receive it. In particular it reaps helper server process. So when we poll for it exit code we cannot find the process andsubprocess
decides to just report success.See also #416
The text was updated successfully, but these errors were encountered: