Am 29.09.2013 04:56, schrieb Wataru Noguchi: > Hi, > > Thanks for comments. > > My currently working repository is > > https://github.com/wnoguchi/git/tree/hotfix/mingw-multibyte-path-checkout-failure > > I have revert commits to 1f10da3. > I'll try failure step. > > - gcc optimization level is O2.(fail) > - gcc O0, O1 works fine. > > > $ gdb git-clone > GNU gdb 6.8 > Copyright (C) 2008 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-mingw32"... > (gdb) r https://github.com/wnoguchi/mingw-checkout-crash.git > Starting program: C:\msysgit\git/git-clone.exe https://github.com/wnoguchi/mingw > -checkout-crash.git > [New thread 800.0xa10] > Error: dll starting at 0x779f0000 not found. > Error: dll starting at 0x75900000 not found. > Error: dll starting at 0x779f0000 not found. > Error: dll starting at 0x778f0000 not found. > [New thread 800.0x92c] > Cloning into 'mingw-checkout-crash'... > Error: dll starting at 0x29f0000 not found. > remote: Counting objects: 8, done. > remote: Compressing objects: 100% (7/7), done. > remote: Total 8 (delta 0), reused 8 (delta 0) > Unpacking objects: 100% (8/8), done. > Checking connectivity... done > [New thread 800.0xea0] > > Program received signal SIGSEGV, Segmentation fault. > 0x004d5200 in git_check_attr ( > path=0xacc6a0 ""..., num=5, check=0x572440) at attr.c:754 > 754 const char *value = check_all_attr[check[i].attr->attr_n > r].value; > (gdb) list > 749 int i; > 750 > 751 collect_all_attrs(path); > 752 > 753 for (i = 0; i < num; i++) { > 754 const char *value = check_all_attr[check[i].attr->attr_n > r].value; > 755 if (value == ATTR__UNKNOWN) > 756 value = ATTR__UNSET; > 757 check[i].value = value; > 758 } I get a different crash on Linux if I set PATH_MAX to 260. The following hackish patch prevents it. Does it help in your case as well? If it does then I'll send a nicer (but longer) one. Thanks, René diff --git a/unpack-trees.c b/unpack-trees.c index 1a61e6f..9bd7dcb 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -961,7 +961,7 @@ static int clear_ce_flags(struct cache_entry **cache, int nr, int select_mask, int clear_mask, struct exclude_list *el) { - char prefix[PATH_MAX]; + char prefix[4096]; return clear_ce_flags_1(cache, nr, prefix, 0, select_mask, clear_mask, -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html