Re: [E-devel] efl test suite timeouts under `ninja test`

Ross Vandegrift <[email protected]> Mon, 8 Jan 2024 23:20:16 -0800
Newsgroups gmane.comp.window-managers.enlightenment.devel
Message-ID <[email protected]>
On Mon, Jan 08, 2024 at 11:08:55PM +0000, Carsten Haitzler wrote:
> try run the above eina test suite and pipe to something that makes it
> timeout... and strace it - or gdb attach to it and find out where it's sitting?
> it should complete in < 1 sec so launch and immediately try and strace and/or
> gdb attach and find out where it's at - if it is still around.
> 
> is somehow a forked child not coming back that it expects to... ?

Yea, it's something like this.  I found out it hangs for exactly 60s, which
lead me to timeout.c.  I also learned strace -f triggers the issue.  CK_FORK=no
fixes the hang as well.

I added debug printfs to efl_check.h and timeout.c - when eina_suite tries to
kill timeout, it kills the wrong pid:

  $ ./build/src/tests/eina/eina_suite fp
  Running suite(s): eina_init_module
  100%: Checks: 0, Failures: 0, Errors: 0
  -------------------- efl_check forked timeout: 296393    <-----
  -------------------- efl_check forked timeout: 0
  Running suite(s): Eina
  -------------------- timeout.c my pid: 296396            <-----
  Max delta(multiplication): 0.007627 (0.061668%)
  Max delta(division): 0.000173 (0.740211%)
  100%: Checks: 4, Failures: 0, Errors: 0
  -------------------- efl_check killing timeout child: 296393
  -------------------- efl_check cleared timeout_pid: 0

So eina_suite.c gets the wrong pid from fork().  In a simple standalone
program, fork() behaves as expected.

I'm going to compare the arch & debian check packages for any suspicious
differences.  And maybe walk through more carefully with gdb.  But I'm out of
time tonight.

Ross