* [BUG] git cherry-pick segfaults with local changes in working directory
@ 2017-06-15 9:11 Sebastian Dröge
2017-06-15 10:32 ` Jeff King
0 siblings, 1 reply; 4+ messages in thread
From: Sebastian Dröge @ 2017-06-15 9:11 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 3205 bytes --]
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
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 963 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] git cherry-pick segfaults with local changes in working directory
2017-06-15 9:11 [BUG] git cherry-pick segfaults with local changes in working directory Sebastian Dröge
@ 2017-06-15 10:32 ` Jeff King
2017-06-15 10:37 ` Sebastian Dröge
0 siblings, 1 reply; 4+ messages in thread
From: Jeff King @ 2017-06-15 10:32 UTC (permalink / raw)
To: Sebastian Dröge; +Cc: git
On Thu, Jun 15, 2017 at 12:11:50PM +0300, Sebastian Dröge wrote:
> 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)
Note that the tarball doesn't have all the necessary objects. Its
.git/objects/info/alternates points to another full clone of
git://anongit.freedesktop.org/gstreamer/gst-plugins-good.
The segfault was fixed in 55e9f0e5c (merge-recursive: handle NULL in
add_cacheinfo() correctly, 2016-11-26), which is in v2.11.1.
Curiously, after the fix we print:
error: addinfo_cache failed for path 'docs/plugins/inspect/plugin-shout2send.xml'
but the cherry-pick succeeds anyway. I'm not sure if that's a bug or
not.
-Peff
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] git cherry-pick segfaults with local changes in working directory
2017-06-15 10:32 ` Jeff King
@ 2017-06-15 10:37 ` Sebastian Dröge
2017-06-15 13:03 ` Jeff King
0 siblings, 1 reply; 4+ messages in thread
From: Sebastian Dröge @ 2017-06-15 10:37 UTC (permalink / raw)
To: Jeff King; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 1137 bytes --]
Hi Jeff,
Thanks for the fast reply!
On Thu, 2017-06-15 at 06:32 -0400, Jeff King wrote:
> On Thu, Jun 15, 2017 at 12:11:50PM +0300, Sebastian Dröge wrote:
>
> > 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)
>
> Note that the tarball doesn't have all the necessary objects. Its
> .git/objects/info/alternates points to another full clone of
> git://anongit.freedesktop.org/gstreamer/gst-plugins-good.
Ah good to know, I thought this only happens if you clone with
--reference and not otherwise.
> The segfault was fixed in 55e9f0e5c (merge-recursive: handle NULL in
> add_cacheinfo() correctly, 2016-11-26), which is in v2.11.1.
I can confirm that this also fixes my specific problem. Thanks!
--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 963 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BUG] git cherry-pick segfaults with local changes in working directory
2017-06-15 10:37 ` Sebastian Dröge
@ 2017-06-15 13:03 ` Jeff King
0 siblings, 0 replies; 4+ messages in thread
From: Jeff King @ 2017-06-15 13:03 UTC (permalink / raw)
To: Sebastian Dröge; +Cc: git
On Thu, Jun 15, 2017 at 01:37:36PM +0300, Sebastian Dröge wrote:
> > Note that the tarball doesn't have all the necessary objects. Its
> > .git/objects/info/alternates points to another full clone of
> > git://anongit.freedesktop.org/gstreamer/gst-plugins-good.
>
> Ah good to know, I thought this only happens if you clone with
> --reference and not otherwise.
If you do a local-filesystem clone of a repository with alternates, the
clone will have the same alternates. So I'm guessing you may have done
such a clone of your --reference repository as part of preparing the
tarball.
-Peff
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-06-15 13:03 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-15 9:11 [BUG] git cherry-pick segfaults with local changes in working directory Sebastian Dröge
2017-06-15 10:32 ` Jeff King
2017-06-15 10:37 ` Sebastian Dröge
2017-06-15 13:03 ` Jeff King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).