From: Jeff King <peff@peff.net> To: Jeff Hostetler <git@jeffhostetler.com> Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>, Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>, git@vger.kernel.org, Junio C Hamano <gitster@pobox.com> Subject: [PATCH 2/3] common-main: delay trace2 initialization Date: Tue, 6 Aug 2019 08:27:26 -0400 Message-ID: <20190806122725.GB13513@sigill.intra.peff.net> (raw) In-Reply-To: <20190806122601.GA21475@sigill.intra.peff.net> 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 a089724958 (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> --- common-main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-main.c b/common-main.c index 582a7b1886..71e21dd20a 100644 --- a/common-main.c +++ b/common-main.c @@ -39,16 +39,16 @@ int main(int argc, const char **argv) git_resolve_executable_dir(argv[0]); - trace2_initialize(); - trace2_cmd_start(argv); - trace2_collect_process_info(TRACE2_PROCESS_INFO_STARTUP); - git_setup_gettext(); initialize_the_repository(); attr_start(); + trace2_initialize(); + trace2_cmd_start(argv); + trace2_collect_process_info(TRACE2_PROCESS_INFO_STARTUP); + result = cmd_main(argc, argv); trace2_cmd_exit(result); -- 2.23.0.rc1.436.g24d2e81391
next prev parent reply other threads:[~2019-08-06 12:27 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-31 19:53 [PATCH 0/1] Make the includeif:onbranch feature more robust Johannes Schindelin via GitGitGadget 2019-07-31 19:53 ` [PATCH 1/1] config: work around bug with includeif:onbranch and early config Johannes Schindelin via GitGitGadget 2019-07-31 21:37 ` Junio C Hamano 2019-07-31 20:06 ` [PATCH v2 0/1] Make the includeif:onbranch feature more robust Johannes Schindelin via GitGitGadget 2019-07-31 20:06 ` [PATCH v2 1/1] config: work around bug with includeif:onbranch and early config Johannes Schindelin via GitGitGadget 2019-07-31 22:02 ` Jeff King 2019-07-31 22:13 ` Johannes Schindelin 2019-07-31 23:12 ` Jeff King 2019-08-01 0:49 ` Jeff King 2019-08-01 17:24 ` Jeff Hostetler 2019-08-06 12:26 ` [PATCH 0/3] the_repository initialization cleanup Jeff King 2019-08-06 12:26 ` [PATCH 1/3] t1309: use short branch name in includeIf.onbranch test Jeff King 2019-08-06 12:27 ` Jeff King [this message] 2019-08-06 12:27 ` [PATCH 3/3] config: stop checking whether the_repository is NULL Jeff King 2019-08-06 12:49 ` Jeff King 2019-08-08 19:48 ` Johannes Schindelin 2019-08-06 12:56 ` [PATCH v2 1/1] config: work around bug with includeif:onbranch and early config Jeff King
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190806122725.GB13513@sigill.intra.peff.net \ --to=peff@peff.net \ --cc=Johannes.Schindelin@gmx.de \ --cc=git@jeffhostetler.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --cc=gitster@pobox.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git