From: Jeff King Date: Thu, 19 Oct 2017 19:34:13 GMT Subject: Re: [PATCH/RFC] grep: turn off threading when recursing submodules Message-ID: <20171019193413.prx5pkmwaxk6mpdt@sigill.intra.peff.net> In-Reply-To: <20171019192618.GB84767@google.com> On Thu, Oct 19, 2017 at 12:26:18PM -0700, Brandon Williams wrote: > One alternative to turning off threading would be to employ proper > locking (like I failed to do) by wrapping the call the > 'add_to_alternates_memory()' in calls to grep_read_lock/unlock: > > + grep_read_lock(); > add_to_alternates_memory(submodule.objectdir); > + grep_read_unlock(); > > That way adding the submodule to the object database won't happen at the > same time another thread is trying to read from the object store. Yeah, I think that is the right approach. Many of Git's APIs aren't thread-safe, so we need a big mutex around "I am doing anything except actually looking at the already-read blob contents". We just missed this spot. -Peff