Skip to content
  • Jeff King's avatar
    common-main: delay trace2 initialization · 5732f2b1
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    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 a0897249
    
     (trace2: refactor setting process starting
    time, 2019-04-15), so there shouldn't be any impact from this patch.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    5732f2b1