On 07/18, Junio C Hamano wrote: > Stefan Beller <sbeller@xxxxxxxxxx> writes: > > >> I'd be more worried about segfault we seem to be getting only on > >> Windows from this: > >> > >> git -C parent grep -e "(1|2)d(3|4)" --recurse-submodules HEAD^ > actual > >> > >> in https://travis-ci.org/git/git/jobs/254654195 by the way. > > > > Thanks for bringing that to my attention, (I do not follow the travis builds > > as closely, as there is no yelling email in my inbox). > > > > Windows builds on travis seem to be flaky. > > (sometimes they do not start), but there are also > > successful builds, including the -rc0, which may indicate > > bw/grep-recurse-submodules may be faulty on Windows. > > I can get valgrind complaints locally from > > $ cd t && sh t7814-grep*.sh --valgrind -i -v > > so this may not be Windows only. Can repo_worktree_path() return a NULL > in repo_read_gitmodules() to cause git_config_from_file() barf on a NULL > gitmodule_path? Yep that's most likely the cause. The issue is if a repository doesn't have a worktree then what should a worktree path look like? repo_read_gitmodules() should check if there is a worktree before trying to load the gitmodules file. I actually noticed this and have it fixed locally in another series I'm working on right now. Looks like I may have to get that change in first though. Thanks for finding this. > > ==20383== Syscall param open(filename) points to unaddressable byte(s) > ==20383== at 0x5153140: __open_nocancel (/build/eglibc-SvCtMH/eglibc-2.19/io/../sysdeps/unix/syscall-template.S:81) > ==20383== by 0x50DDED7: _IO_file_fopen@@GLIBC_2.2.5 (/build/eglibc-SvCtMH/eglibc-2.19/libio/fileops.c:228) > ==20383== by 0x50D23D3: __fopen_internal (/build/eglibc-SvCtMH/eglibc-2.19/libio/iofopen.c:90) > ==20383== by 0x569107: git_fopen (/home/gitster/git.git/compat/fopen.c:22) > ==20383== by 0x55B1ED: fopen_or_warn (/home/gitster/git.git/wrapper.c:439) > ==20383== by 0x4A2A32: git_config_from_file (/home/gitster/git.git/config.c:1442) > ==20383== by 0x540317: repo_read_gitmodules (/home/gitster/git.git/submodule.c:269) > ==20383== by 0x434389: grep_submodule (/home/gitster/git.git/builtin/grep.c:422) > ==20383== by 0x4348C8: grep_tree (/home/gitster/git.git/builtin/grep.c:580) > ==20383== by 0x434867: grep_tree (/home/gitster/git.git/builtin/grep.c:576) > ==20383== by 0x436034: cmd_grep (/home/gitster/git.git/builtin/grep.c:622) > ==20383== by 0x4063DC: handle_builtin (/home/gitster/git.git/git.c:330) > ==20383== Address 0x0 is not stack'd, malloc'd or (recently) free'd > > -- Brandon Williams