Re: "git am" crash (builtin/apply.c:2108) + small repro
From: Alexey Spiridonov <hidden>
Date: 2016-06-15 22:54:56
Thanks a lot for trying this. My hashes match. I just re-reproduced it on two flavors of Linux (64 and 32-bit), with two different Git versions (see below). What platform are you using? lesha@buryonka-ubuntu32:~$ mkdir GIT-AM-CRASH lesha@buryonka-ubuntu32:~$ cd GIT-AM-CRASH lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ mv ../crashy.patch ../__init__.py . lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ git init . Initialized empty Git repository in /home/lesha/GIT-AM-CRASH/.git/ lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ mkdir -p meep/spork lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ mv __init__.py meep/spork lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ git add meep/spork/__init__.py lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ git ci -am 'moo' [master (root-commit) fa8f8fd] moo 1 file changed, 6 insertions(+) create mode 100644 meep/spork/__init__.py lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ git am crashy.patch Applying: Git crash bug git: builtin/apply.c:1990: update_pre_post_images: Assertion `fixed_preimage.nr == preimage->nr' failed. Aborted (core dumped) Patch failed at 0001 Git crash bug When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort". lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ sha1 sha1pass sha1sum lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ sha1sum crashy.patch meep/spork/__init__.py 3d4711cd15d9617e0d3a52bbcd7def898c12c328 crashy.patch fd63cc32338823f216a6684ce5118a69113968c8 meep/spork/__init__.py lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ git --version git version 1.7.9.5 lesha@buryonka-ubuntu32:~/GIT-AM-CRASH$ uname -a Linux buryonka-ubuntu32 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux [lesha@dev037 ~/GIT-AM-CRASH] git init . Initialized empty Git repository in /home/lesha/GIT-AM-CRASH/.git/ [lesha@dev037 ~/GIT-AM-CRASH] mkdir -p meep/spork [lesha@dev037 ~/GIT-AM-CRASH] mv __init__.py meep/spork [lesha@dev037 ~/GIT-AM-CRASH] git add meep/spork/__init__.py [lesha@dev037 ~/GIT-AM-CRASH] git ci -am 'moo' [master (root-commit) 4c3fe5f] moo 1 files changed, 6 insertions(+), 0 deletions(-) create mode 100644 meep/spork/__init__.py [lesha@dev037 ~/GIT-AM-CRASH] git am crashy.patch Applying: Git crash bug git: builtin/apply.c:1989: update_pre_post_images: Assertion `fixed_preimage.nr == preimage->nr' failed. /usr/libexec/git-core/git-am: line 789: 32074 Aborted git apply --index "$dotest/patch" Patch failed at 0001 Git crash bug When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort". [lesha@dev037 ~/GIT-AM-CRASH] git --version git version 1.7.8.4 [lesha@dev037 ~/GIT-AM-CRASH] uname -a Linux dev037 2.6.38.4 #63 SMP Mon Feb 13 16:22:45 PST 2012 x86_64 x86_64 x86_64 GNU/Linux [lesha@dev037 ~/GIT-AM-CRASH] sha1sum crashy.patch meep/spork/__init__.py 3d4711cd15d9617e0d3a52bbcd7def898c12c328 crashy.patch fd63cc32338823f216a6684ce5118a69113968c8 meep/spork/__init__.py -a On Wed, Oct 3, 2012 at 4:27 AM, Nguyen Thai Ngoc Duy [off-list ref] wrote:
On Tue, Oct 2, 2012 at 1:33 AM, Alexey Spiridonov [off-list ref] wrote:quoted
This reproduces in trunk, 1.7.8.4, and 1.7.9.5.fwiw, I cannot reproduce it (git-apply does not crash). I tried both versions and 1.8.0-rc1. Just in case the attached files are somehow corrupted, this is sha1sum from my side: 3d4711cd15d9617e0d3a52bbcd7def898c12c328 crashy.patch fd63cc32338823f216a6684ce5118a69113968c8 meep/spork/__init__.pyquoted
I suspect this has to do with a whitespace + no trailing newline issues. The patch was generated by 1.7.9.5. I mangled it by hand to get it to be small, but the initial crash happened on a large, real-world output of "git format-patch". Error messages: ~/GIT-AM-CRASH$ ../git/git am crashy.patch Applying: Git crash bug git: builtin/apply.c:2108: update_pre_post_images: Assertion `fixed_preimage.nr == preimage->nr' failed. /home/lesha/GIT-AM-CRASH/../git/git-am: line 811: 23819 Aborted git apply --index "$dotest/patch" Patch failed at 0001 Git crash bug The copy of the patch that failed is found in: /home/lesha/GIT-AM-CRASH/.git/rebase-apply/patch When you have resolved this problem, run "git am --resolved". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Repro steps: mkdir GIT-AM-CRASH cd GIT-AM-CRASH # download files into this directory git init . mkdir -p meep/spork mv __init__.py meep/spork git add meep/spork/__init__.py git ci -am 'moo' git am crashy.patch Hope this helps! Alexey-- Duy