Skip to content

Commit 5732f2b

Browse files
peffgitster
authored andcommitted
common-main: delay trace2 initialization
We initialize the trace2 system in the common main() function so that all programs (even ones that aren't builtins) will enable tracing. But trace2 startup is relatively heavy-weight, as we have to actually read on-disk config to decide whether to trace. This can cause unexpected interactions with other common-main initialization. For instance, we'll end up in the config code before calling initialize_the_repository(), and the usual invariant that the_repository is never NULL will not hold. Let's push the trace2 initialization further down in common-main, to just before we execute cmd_main(). The other parts of the initialization are much more self-contained and less likely to call library code that depends on those kinds of invariants. Originally the trace2 code tried to start as early as possible to get accurate timings. But the timer initialization was split out from the config reading in a089724 (trace2: refactor setting process starting time, 2019-04-15), so there shouldn't be any impact from this patch. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 58ebccb commit 5732f2b

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

common-main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ int main(int argc, const char **argv)
3939

4040
git_resolve_executable_dir(argv[0]);
4141

42-
trace2_initialize();
43-
trace2_cmd_start(argv);
44-
trace2_collect_process_info(TRACE2_PROCESS_INFO_STARTUP);
45-
4642
git_setup_gettext();
4743

4844
initialize_the_repository();
4945

5046
attr_start();
5147

48+
trace2_initialize();
49+
trace2_cmd_start(argv);
50+
trace2_collect_process_info(TRACE2_PROCESS_INFO_STARTUP);
51+
5252
result = cmd_main(argc, argv);
5353

5454
trace2_cmd_exit(result);

0 commit comments

Comments
 (0)