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

[BUG] git cherry-pick segfaults with local changes in working directory

From
SDSebastian Dröge <sebastian@centricular.com>
Date
Jun 15, 2017, 09:11 UTC
Message-ID
<1497517910.2239.105.camel@centricular.com>
Hi,
This is with git 2.11.0 (Debian 2.11.0-4) and can be reproduced with
the packed checkout here:
  https://people.freedesktop.org/~slomo/git-cherry-pick-segfault_gst-plugins-good.tar.xz

$ tar xf git-cherry-pick-segfault_gst-plugins-good.tar.xz $ cd gst-plugins-good $ git cherry-pick 0421fb04470af90e8810e7e5e69955d3192896ba Segmentation fault (core dumped)

Without local changes (e.g. after "git stash") it works fine. Also note that the commit that is cherry-picked does not contain any changes to files that have local changes.

Backtrace below:
Thread 1 "git" received signal SIGSEGV, Segmentation fault.
add_index_entry_with_check (option=0, ce=0x0, istate=0x555555993900 <the_index>) at read-cache.c:1012
1012	read-cache.c: No such file or directory.
(gdb) bt
#0  add_index_entry_with_check (option=0, ce=0x0, istate=0x555555993900 <the_index>) at read-cache.c:1012
#1  add_index_entry (istate=0x555555993900 <the_index>, ce=0x0, option=0) at read-cache.c:1061
#2  0x0000555555646df6 in merge_content (o=o@entry=0x7fffffffd550, 
    path=path@entry=0x555555a461c0 "docs/plugins/inspect/plugin-shout2send.xml", o_oid=<optimized out>, 
    o_oid@entry=0x555555a42adc, o_mode=o_mode@entry=33188, a_oid=a_oid@entry=0x555555a42af4, 
    a_mode=a_mode@entry=33188, b_oid=0x555555a42b0c, b_mode=33188, rename_conflict_info=0x555555a45fa0)
    at merge-recursive.c:1727
#3  0x0000555555647a1d in process_entry (entry=<optimized out>, path=<optimized out>, o=0x7fffffffd550)
    at merge-recursive.c:1885
#4  merge_trees (o=o@entry=0x7fffffffd550, head=head@entry=0x5555559b7c98, merge=<optimized out>, 
    merge@entry=0x5555559b7c70, common=<optimized out>, common@entry=0x5555559b7cc0, 
    result=result@entry=0x7fffffffd530) at merge-recursive.c:1948
#5  0x000055555568a248 in do_recursive_merge (opts=0x7fffffffdcc0, msgbuf=0x7fffffffd510, 
    head=0x7fffffffd620 "\246\256՝s8J\273ݵ\241y\303#j\277\211\266\\\n\377\177", next_label=<optimized out>, 
    base_label=<optimized out>, next=<optimized out>, base=<optimized out>) at sequencer.c:389
#6  do_pick_commit (command=TODO_PICK, commit=commit@entry=0x5555559a7c60, opts=opts@entry=0x7fffffffdcc0)
    at sequencer.c:757
#7  0x000055555568baa3 in single_pick (opts=0x7fffffffdcc0, cmit=0x5555559a7c60) at sequencer.c:1329
#8  sequencer_pick_revisions (opts=0x7fffffffdcc0) at sequencer.c:1378
#9  0x00005555555d34cf in run_sequencer (argc=1, argc@entry=2, argv=argv@entry=0x7fffffffe0c0, 
    opts=<optimized out>, opts@entry=0x7fffffffdcc0) at builtin/revert.c:178
#10 0x00005555555d3928 in cmd_cherry_pick (argc=2, argv=0x7fffffffe0c0, prefix=<optimized out>)
    at builtin/revert.c:203
#11 0x0000555555566205 in run_builtin (argv=<optimized out>, argc=<optimized out>, p=<optimized out>)
    at git.c:373
#12 handle_builtin (argc=2, argv=0x7fffffffe0c0) at git.c:572
#13 0x00005555555665a2 in run_argv (argv=0x7fffffffde60, argcp=0x7fffffffde6c) at git.c:630
#14 cmd_main (argc=<optimized out>, argv=<optimized out>) at git.c:707
#15 0x00005555555655d2 in main (argc=3, argv=0x7fffffffe0b8) at common-main.c:40
-- 
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
Next: Jeff King
Message 1 of 4 in “[BUG] git cherry-pick segfaults with local changes in working directory”
  1. Sebastian DrögeJun 15, 2017
  2. Jeff KingJun 15, 2017
  3. Sebastian DrögeJun 15, 2017
  4. Jeff KingJun 15, 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.