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

Re: Git Gui: Branch->create currently fails...

From
Pratyush Yadav <me@yadavpratyush.com>
Date
Oct 16, 2019, 18:52 UTC
Message-ID
<20191016185221.hufjb4uavacumbmc@yadavpratyush.com>
In-Reply-To
<dc8a9b93-a2e7-4fbf-0ea7-f1a855f4b926@iee.email>
On 14/10/19 11:11PM, Philip Oakley wrote:
Show 28 quoted lines
> On 14/10/2019 18:57, Pratyush Yadav wrote:
> > > list "refs/heads/MSVC-README" [list "commit"
> > > "056fb95c8e983ec07e9f5f8baa0b119bf3d13fed" [concat "" "Philip Oakley"]
> > > [reformat_date [concat "" "Sun May 19 22:33:37 2019 +0100"]]
> > > "compat/vcSegmentation fault
> > > 
> > > 
> > > Not exactly the same, but almost. Ends the same place, with as similar short
> > > line.
> > > This is run inside the bash that is started directly by the git-for-windows
> > > sdk start icon. (Target: C:\git-sdk-64\git-bash.exe   Stat in:
> > > C:/git-sdk-64/)
> > > 
> > > so looks to be MSYS2/bash related.
> > Ah, so it is an upstream issue. I guess we can just report it and wait
> > for them to fix it.
> I'd missed the final 'Segmentation fault' on the last line in the bash
> output that wasn't there for the captured file.
> 
> That was repeatable in re-testing.
> But failed if I changed the $fmt string to a plain text 500 char string
> ("1234567890123...").
> 
> I've still to trim down the complicated $fmt string to see if I can see
> where that seg fault starts (i.e. some form of MVCE), so that it can be
> investigated.
> Possibly should check if the --tcl flag actually invokes any tcl! Otherwise
> it's fully in the Git/G-f-W zone.

A quick look tells me '--tcl' does not invoke any Tcl. It is just used to output properly formatted strings for Tcl. The option sets the value of 'format.quote_style' in for-each-ref (builtin/for-each-ref.c:33). That value is later indirectly ends up being used in the function ref_filter.c::quote_formatting.

The Tcl code we execute comes from the long $fmt string, which is built in git-gui/choose_rev.tcl:133-147. `for-each-ref` just fills in the placeholder values, properly formatting them for use in Tcl.

As an experiment, you can try removing '--tcl' from the `for-each-ref` command that segfaults, just to be sure. It would probably output invalid Tcl, but since we don't do anything with that output, it doesn't really matter, and would let us know if '--tcl' is really the culprit.

Show 10 quoted lines
> ...
> Just rebuilt (I hope) the Windows Subsystem for Linux (WSL) with git v2.23.0
> installed and got:
> 
> list "refs/heads/MSVC-README" [list "commit"
> "056fb95c8e983ec07e9f5f8baa0b119bf3d13fed" [concat "" "Philip Oakley"]
> [reformat_date [concat "" "Sun May 19 22:33:37 2019 +0100"]]
> "compat/vcbuild/README: clean/update 'vcpkg' env for Visual Studio updates"]
> [list "" "" "" [reformat_date ""] ""]
> munmap_chunk(): invalid pointer

A quick Google search tells me munmap_chunk() is probably related to an invalid pointer being freed. Either a double free or a free on a pointer not allocated by malloc or something similar.

Show 8 quoted lines
> Aborted (core dumped)
> root@Philip-Win10:/mnt/c/git-sdk-64/usr/src/git#
> 
> 
> That said, haven't got the gitk and git gui to work yet on the WSL because
> it doesn't like the tcl/tk.
> 
> It's a bit of a hole digging exercise.
-- 
Regards,
Pratyush Yadav
Previous: Philip OakleyNext: Philip Oakley
Message 9 of 10 in “Git Gui: Branch->create currently fails...”
  1. Philip OakleyOct 7, 2019
  2. Philip OakleyOct 7, 2019
  3. Pratyush YadavOct 8, 2019
  4. Philip OakleyOct 12, 2019
  5. Pratyush YadavOct 13, 2019
  6. Philip OakleyOct 14, 2019
  7. Pratyush YadavOct 14, 2019
  8. Philip OakleyOct 14, 2019
  9. Pratyush YadavOct 16, 2019
  10. Philip OakleyOct 18, 2019

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.