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

Crash in t3507-cherry-pick-conflict.sh with GIT_TEST_SPLIT_INDEX set

From
Christian Couder <christian.couder@gmail.com>
Date
Jun 24, 2017, 18:51 UTC
Message-ID
<CAP8UFD0bOfzY-_hBDKddOcJdPUpP2KEVaX_SrCgvAMYAHtseiQ@mail.gmail.com>

Git from the master branch currently segfaults when running t3507-cherry-pick-conflict.sh with GIT_TEST_SPLIT_INDEX set:

expecting success:
        pristine_detach initial &&
        test_must_fail git cherry-pick -s picked-signed &&
        git commit -a -s &&
        test $(git show -s |grep -c "Signed-off-by") = 1

HEAD is now at df2a63d... initial Auto-merging foo CONFLICT (content): Merge conflict in foo error: could not apply e4ca149... picked-signed hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' Segmentation fault not ok 29 - commit after failed cherry-pick does not add duplicated -s # # pristine_detach initial && # test_must_fail git cherry-pick -s picked-signed && # git commit -a -s && # test $(git show -s |grep -c "Signed-off-by") = 1 #

The crash happens during the `git commit -a -s` with a backtrace like this:
Program received signal SIGSEGV, Segmentation fault.
0x000000000050bcf1 in entry_equals (map=0x8cef80 <the_index+64>,
e1=0xa2d2d2d2d2d2d00, e2=0x7fffffffce10,
    keydata=0x0) at hashmap.c:98
98              return (e1 == e2) || (e1->hash == e2->hash &&
!map->cmpfn(e1, e2, keydata));
(gdb) bt
#0  0x000000000050bcf1 in entry_equals (map=0x8cef80 <the_index+64>,
e1=0xa2d2d2d2d2d2d00, e2=0x7fffffffce10,
    keydata=0x0) at hashmap.c:98
#1  0x000000000050bec6 in find_entry_ptr (map=0x8cef80 <the_index+64>,
key=0x7fffffffce10, keydata=0x0)
    at hashmap.c:138
#2  0x000000000050c044 in hashmap_get (map=0x8cef80 <the_index+64>,
key=0x7fffffffce10, keydata=0x0)
    at hashmap.c:182
#3  0x0000000000525a1d in hashmap_get_from_hash (map=0x8cef80
<the_index+64>, hash=1625022057, keydata=0x0)
    at hashmap.h:78
#4  0x0000000000526edd in index_file_exists (istate=0x8cef40
<the_index>, name=0x8f19d0 "unrelated",
    namelen=9, icase=0) at name-hash.c:701
#5  0x00000000004f55ba in treat_one_path (dir=0x7fffffffd0b0,
untracked=0x0, istate=0x8cef40 <the_index>,
    path=0x7fffffffcf80, baselen=0, pathspec=0x88c2b8 <s+24>, dtype=8,
de=0x8f8a00) at dir.c:1550
#6  0x00000000004f5914 in treat_path (dir=0x7fffffffd0b0,
untracked=0x0, cdir=0x7fffffffcfa0,
    istate=0x8cef40 <the_index>, path=0x7fffffffcf80, baselen=0,
pathspec=0x88c2b8 <s+24>) at dir.c:1660
#7  0x00000000004f6006 in read_directory_recursive
(dir=0x7fffffffd0b0, istate=0x8cef40 <the_index>,
    base=0x61561b "", baselen=0, untracked=0x0, check_only=0,
pathspec=0x88c2b8 <s+24>) at dir.c:1809

It bisects to f9d7abec2a (split-index: add and use unshare_split_index(), 2017-05-05) that is fixing memory leaks when discarding the index. It looks like we are freeing some cache entries that we shouldn't free.

Next: Junio C Hamano
Message 1 of 2 in “Crash in t3507-cherry-pick-conflict.sh with GIT_TEST_SPLIT_INDEX set”
  1. Christian CouderJun 24, 2017
  2. Junio C HamanoJun 24, 2017

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.