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

Re: [PATCH] run-command: don't spam trace2_child_exit()

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 28, 2022, 21:46 UTC
Message-ID
<xmqqr15gev94.fsf@gitster.g>
In-Reply-To
<4616d09ffa632bd2c9e308a713c4bdf2a1328c3c.1651179450.git.steadmon@google.com>
Josh Steadmon <steadmon@google.com> writes:
> In rare cases, wait_or_whine() cannot determine a child process's exit
> status (and will return -1 in this case). This can cause Git to issue
> trace2 child_exit events despite the fact that the child is still
> running.

Rather, we do not even know if the child is still running when it happens, right? It is curious what "rare cases" makes the symptom appear. Do we know?

The patch looks OK from the "we do not know the child exited in this case, so we shouldn't be reporting the child exit" point of view, of course. Having one event that started a child in the log and then having millions of events that reports the exit of the (same) child is way too broken. With this change, we remove these phoney exit events from the log.

Do we know, for such a child process that caused these millions phoney exit events, we got a real exit event at the end? Otherwise, we'd still have a similar problem in the opposite direction, i.e. a child has a start event recorded, many exit event discarded but the log lacks the true exit event for the child, implying that the child is still running because we failed to log its exit?

Show 8 quoted lines
>  int finish_command_in_signal(struct child_process *cmd)
>  {
>  	int ret = wait_or_whine(cmd->pid, cmd->args.v[0], 1);
> -	trace2_child_exit(cmd, ret);
> +	if (ret != -1)
> +		trace2_child_exit(cmd, ret);
>  	return ret;
>  }
Will queue; thanks.
Previous: Josh SteadmonNext: Jeff Hostetler
Message 2 of 10 in “run-command: don't spam trace2_child_exit()”
  1. run-command: don't spam trace2_child_exit()Josh Steadmon, Apr 28, 2022
  2. Junio C HamanoApr 28, 2022
  3. Jeff HostetlerMay 3, 2022
  4. Josh SteadmonMay 5, 2022
  5. Jeff HostetlerMay 10, 2022
  6. Josh SteadmonJun 7, 2022
  7. Josh SteadmonMay 5, 2022
  8. run-command: don't spam trace2_child_exit()Josh Steadmon, Jun 7, 2022
  9. Ævar Arnfjörð BjarmasonJun 7, 2022
  10. Jeff HostetlerJun 10, 2022

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.