On Thu, Aug 01, 2019 at 01:24:17PM -0400, Jeff Hostetler wrote: > > By the way, I wondered why trace2's existing config reading did not > > cause us to segfault because of this. It is because it invented the > > "very early config" function which always ignores some config sources > > (working around this problem, but also making it weirdly unlike most > > other config). > > Yes, I added the "very early config" to try to work around some of > the chicken-n-egg problems. I can't say that I was completely happy > with having to do that. I haven't had time to play with your patch > suggestion here, but I think it would be fine to do if it will help > with the original problem. > > In [1] I added code to just start the clock in isolation (rather than > being part of the trace2_initialize() -- which does all the config > loading and subsystem initialization). So it is OK to let the > trace2_initialize() run a little later. (Part of the reason for that > split was to allow git_resolve_executable_dir() to run first, since > that data was needed to find the location of the system config relative > to the exe path (sigh).) > > [1] a089724958a trace2: refactor setting process starting time > > So, as you suggested in your previous response, something like > this would/should be fine. Thanks, that pointer helped me write the commit message. So here are a few cleanups that can go on top (of master now, since Dscho's patch graduated). There's no rush to get these into v2.23. Note that there _is_ still a funny corner case with the way the original patch checks the_repository->git_dir, but I don't think it's worth fixing at this point. I'll send a followup email with more details. [1/3]: t1309: use short branch name in includeIf.onbranch test [2/3]: common-main: delay trace2 initialization [3/3]: config: stop checking whether the_repository is NULL common-main.c | 8 ++++---- config.c | 2 +- t/t1309-early-config.sh | 7 ++++++- 3 files changed, 11 insertions(+), 6 deletions(-) -Peff