git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [ANNOUNCE] Git v2.21.0-rc1 (NonStop Results)

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Feb 15, 2019, 13:02 UTC
Message-ID
<20190215130213.GK1622@szeder.dev>
In-Reply-To
<nycvar.QRO.7.76.6.1902142234070.45@tvgsbejvaqbjf.bet>
On Thu, Feb 14, 2019 at 10:36:42PM +0100, Johannes Schindelin wrote:
Show 8 quoted lines
> On Thu, 14 Feb 2019, Randall S. Becker wrote:
> 
> > t5562 still hangs (blocking) - this breaks our CI pipeline since the
> > test hangs and we have no explanation of whether the hang is in git or
> > the tests.
> 
> I have "good" news: it now also hangs on Ubuntu 16.04 in Azure Pipelines'
> Linux agents.

I haven't yet seen that hang in the wild and couldn't reproduce it on purpose, but there is definitely something fishy with t5562 even on Linux and even without that perl generate_zero_bytes helper.

  $ git checkout cc95bc2025^
  Previous HEAD position was cc95bc2025 t5562: replace /dev/zero with a pipe from generate_zero_bytes
  HEAD is now at 24b451e77c t5318: replace use of /dev/zero with generate_zero_bytes
  $ make
  <snip>
  $ cd t
  # take note of the shell's PID
  $ echo $$
  15522
  $ ./t5562-http-backend-content-length.sh --stress |tee LOG
  OK    3.0
  OK    1.0
  OK    6.0
  OK    0.0
  <snap>
And then in another terminal run this:
  $ pstree -a -p 15522
or, to make it easier noticable what changed and what stayed the same:
  $ watch -d pstree -a -p 15522
The output will sooner or later will look like this:
  bash,15522
    └─t5562-http-back,21082 ./t5562-http-backend-content-length.sh --stress
        ├─t5562-http-back,21089 ./t5562-http-backend-content-length.sh --stress
        │   └─sh,24906 ./t5562-http-backend-content-length.sh --stress
        ├─t5562-http-back,21090 ./t5562-http-backend-content-length.sh --stress
        │   └─sh,26660 ./t5562-http-backend-content-length.sh --stress
        ├─t5562-http-back,21092 ./t5562-http-backend-content-length.sh --stress
        │   └─sh,4202 ./t5562-http-backend-content-length.sh --stress
        │       └─sh,5696 ./t5562-http-backend-content-length.sh --stress
        │           └─perl,5697 /home/szeder/src/git/t/t5562/invoke-with-content-length.pl push_body.gz.trunc git http-backend
        │               └─(git,5722)
        ├─t5562-http-back,21093 ./t5562-http-backend-content-length.sh --stress
        │   └─sh,25572 ./t5562-http-backend-content-length.sh --stress
  <snip>

It won't show most of the processes run in the tests, because they are just too fast and short-lived. However, occasionally it does show a stuck git process, which is shown as <defunct> in regular 'ps aux' output:

  szeder   5722  0.0  0.0      0     0 pts/16   Z+   13:36   0:00 [git] <defunct>

Note that this is not a "proper" hang, in the sense that this process is not stuck forever, but only for about 1 minute, after which it disappears, and the test continues and eventually finishes with success. I've looked into the logs of a couple of such stuck jobs, and it seems that it varies in which test that git process happened to get stuck.

 
Previous: Randall S. BeckerNext: Randall S. Becker
Message 5 of 13 in “RE: [ANNOUNCE] Git v2.21.0-rc1 (NonStop Results)”
  1. Randall S. BeckerFeb 14, 2019
  2. Junio C HamanoFeb 14, 2019
  3. Johannes SchindelinFeb 14, 2019
  4. Randall S. BeckerFeb 14, 2019
  5. SZEDER GáborFeb 15, 2019
  6. Randall S. BeckerFeb 15, 2019
  7. Max KirillovFeb 15, 2019
  8. Randall S. BeckerFeb 15, 2019
  9. Max KirillovFeb 16, 2019
  10. t5562: chunked sleep to avoid lost SIGCHILDMax Kirillov, Feb 18, 2019
  11. Randall S. BeckerFeb 18, 2019
  12. Max KirillovFeb 18, 2019
  13. Junio C HamanoFeb 19, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.