git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: final git bisect step leads to: "fatal: you want to use way too much memory"

From
Jeff King <peff@peff.net>
Date
Jun 16, 2016, 13:47 UTC
Message-ID
<20160616134742.GA25920@sigill.intra.peff.net>
In-Reply-To
<20160616132952.GC314@x4>
On Thu, Jun 16, 2016 at 03:29:52PM +0200, Markus Trippelsdorf wrote:
Show 14 quoted lines
> On 2016.06.16 at 14:53 +0200, Markus Trippelsdorf wrote:
> > markus@x4 gcc % git bisect good
> > f216419e5c4c41df70dbe00a6ea1faea46484dc8 is the first bad commit
> > commit f216419e5c4c41df70dbe00a6ea1faea46484dc8
> > fatal: you want to use way too much memory
> > markus@x4 gcc % 
> 
> The issue started with:
> 
> commit fe37a9c586a65943e1bca327a1bbe1ca4a3d3023
> Author: Junio C Hamano <gitster@pobox.com>
> Date:   Tue Mar 29 16:05:39 2016 -0700
> 
>     pretty: allow tweaking tabwidth in --expand-tabs

Interesting. But `git show` on the commit in question (f216419e5) does not have any problems. It looks like bisect's internal "show the commit" code does not properly call setup_revisions() to finalize the "struct rev_info". That leaves the expand_tabs_in_log flag as "-1", which then ends up cast to an unsigned of 2^64 when we use it in a size computation.

And who knows what other bugs have been lurking there over the years; there are other flags that should be finalized by setup_revision(), too.

This patch should fix it.
diff --git a/bisect.c b/bisect.c
index 6d93edb..dc13319 100644
--- a/bisect.c
+++ b/bisect.c
@@ -890,6 +890,7 @@ static void show_diff_tree(const char *prefix, struct commit *commit)
 	if (!opt.diffopt.output_format)
 		opt.diffopt.output_format = DIFF_FORMAT_RAW;
 
+	setup_revisions(0, NULL, &opt, NULL);
 	log_tree_commit(&opt, commit);
 }
 
Previous: Markus TrippelsdorfNext: Junio C Hamano
Message 4 of 8 in “final git bisect step leads to: "fatal: you want to use way too much memory"”
  1. Markus TrippelsdorfJun 16, 2016
  2. Markus TrippelsdorfJun 16, 2016
  3. Markus TrippelsdorfJun 16, 2016
  4. Jeff KingJun 16, 2016
  5. Junio C HamanoJun 16, 2016
  6. bisect: always call setup_revisions after init_revisionsJeff King, Jun 16, 2016
  7. Junio C HamanoJun 17, 2016
  8. Jeff KingJun 17, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.