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

Re: [PATCH] git tag --contains : avoid stack overflow

From
JLJean-Jacques Lafay <jeanjacques.lafay@gmail.com>
Date
Nov 10, 2012, 21:13 UTC
Message-ID
<d9843c09-3ca9-406e-9df8-78603235d985@googlegroups.com>
In-Reply-To
<03ED9D50D1F64467863C051959CFC433@PhilipOakley>
Le samedi 10 novembre 2012 21:00:10 UTC+1, Philip Oakley a écrit :
Show 22 quoted lines
> From: "Jean-Jacques Lafay" <jeanjacq...@gmail.com <javascript:>> Sent: 
> Saturday, 
> November 10, 2012 5:36 PM 
> > In large repos, the recursion implementation of contains(commit, 
> > commit_list) 
> > may result in a stack overflow. Replace the recursion with a loop to 
> > fix it. 
> > 
> > Signed-off-by: Jean-Jacques Lafay <jeanjacq...@gmail.com <javascript:>> 
>
> This is a change to the main git code so it is better to submit it to 
> the main git list at g...@vger.kernel.org <javascript:> (plain text, no 
> HTML, first 
> post usually has a delay ;-) 
>
> It sounds reasonable but others may have opinions and comments. 
>
> Have you actually suffered from the stack overflow issue? You only 
> suggest it as a possibility, rather than a real problem. 
>
> Philip 
>

Yes, it actually crashed on me, and since the call is made by GitExtension while browsing the commit history, it was quickly annoying to have windows popping a "git.exe stopped working" message box at my face every time I clicked on a line of the history ;-) (well, you can sort of work around it by having the "file tree" or "diff" tab active)

Coincidentally, as I was having a glance at the recent topics, I saw that someone else experienced it.

However, I couldn't reproduce it on Linux : where the windows 
implementations crashes at a ~32000 depth (*not* exactly 32768, mind you), 
on linux it happily went through 100000 commits. I didn't take time to look 
much further, but maybe on my 64 bit Linux VM, the process can afford to 
reserve a much bigger address range for the stack of each thread than the 
1Mb given to 32 bit processes on windows.
 
Jean-Jacques.
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en
Previous: Philip OakleyNext: Pat Thoyts
Message 2 of 15 in “Re: [PATCH] git tag --contains : avoid stack overflow”
  1. Philip OakleyNov 10, 2012
  2. Jean-Jacques LafayNov 10, 2012
  3. Pat ThoytsNov 10, 2012
  4. René ScharfeNov 11, 2012
  5. Jeff KingNov 11, 2012
  6. Johannes SchindelinNov 11, 2012
  7. Jean-Jacques LafayNov 12, 2012
  8. Jeff KingNov 12, 2012
  9. Johannes SchindelinNov 13, 2012
  10. Jeff KingNov 13, 2012
  11. Johannes SchindelinNov 13, 2012
  12. Jeff KingNov 13, 2012
  13. Johannes SchindelinNov 13, 2012
  14. Junio C HamanoNov 13, 2012
  15. Jeff KingNov 13, 2012

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.