From: Daniel <mjucde@o2•pl>
To: "Git List" <git@vger•kernel.org>, "Tomas Carnecky" <tom@dbservice•com>
Subject: Re: checkout -m dumping core
Date: Wed, 06 Jan 2010 09:11:42 +0100 [thread overview]
Message-ID: <2b9e2ea1.461a9565.4b4445be.38bda@o2.pl> (raw)
In-Reply-To: <4B4381CA.1080504@dbservice.com>
Tomas Carnecky <tom@dbservice•com> wrote:
> git version 1.6.6.78.gbd757c
>
> HEAD points to a non-existent branch refs/heads/master. Normal checkout
> origin fails with:
> error: Entry '.cvsignore' would be overwritten by merge. Cannot merge.
> (the working tree does indeed contain this file). So I tried checkout -m
> and git crashed. Workaround for me was reset --hard origin; checkout
> origin. I have the repository backed up in case someone wants to try
> themselves.
>
> $ gdb `which git`
> GNU gdb 6.8
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i386-pc-solaris2.11"...
> (gdb) run checkout -m origin
> Starting program: /export/home/tomc/local/git/bin/git checkout -m origin
> warning: Lowest section in /lib/libpthread.so.1 is .dynamic at 00000074
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x080788fa in cmd_checkout (argc=0, argv=0x8047538, prefix=0x0) at
> builtin-checkout.c:450
> 450 merge_trees(&o, new->commit->tree, work,
> (gdb) list
> 445 ret = reset_tree(new->commit->tree,
> opts, 1);
> 446 if (ret)
> 447 return ret;
> 448 o.branch1 = new->name;
> 449 o.branch2 = "local";
> 450 merge_trees(&o, new->commit->tree, work,
> 451 old->commit->tree, &result);
> 452 ret = reset_tree(new->commit->tree,
> opts, 0);
> 453 if (ret)
> 454 return ret;
> (gdb) p o
> $1 = {branch1 = 0x8047650 "origin", branch2 = 0x0, subtree_merge = 0,
> buffer_output = 1, verbosity = 0, diff_rename_limit = -1,
> merge_rename_limit = -1, call_depth = 0, obuf = {alloc = 0, len = 0, buf
> = 0x81643ac ""}, current_file_set = {
> items = 0x0, nr = 0, alloc = 0, strdup_strings = 1},
> current_directory_set = {items = 0x0, nr = 0, alloc = 0, strdup_strings
> = 1}}
> (gdb) p new
> $2 = {name = 0x8047650 "origin", path = 0x8166438 "refs/heads/origin",
> commit = 0x8168f48}
> (gdb) p work
> $3 = (struct tree *) 0x8174f90
> (gdb) p old
> No symbol "old" in current context.
> (gdb) p result
> $4 = (struct tree *) 0xfefc81be
> (gdb)
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger•kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
Does this patch help?
---
From b2203bded22db1a496ee3c9f6f5f4a384a8ccefa Mon Sep 17 00:00:00 2001
From: Daniel Baranski <mjucde@o2•pl>
Date: Wed, 6 Jan 2010 08:58:21 +0100
Subject: [PATCH] checkout -m: Fix SEGFAULT if HEAD is not valid.
Signed-off-by: Daniel Barański <mjucde@o2•pl>
---
builtin-checkout.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 64f3a11..0ab59b2 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -422,7 +422,8 @@ static int merge_working_tree(struct checkout_opts *opts,
struct merge_options o;
if (!opts->merge)
return 1;
- parse_commit(old->commit);
+ if (!parse_commit(old->commit))
+ die("Couldn't parse commit '%s'", old->path);
/* Do more real merge */
--
1.6.5.6
next prev parent reply other threads:[~2010-01-06 8:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-05 18:15 checkout -m dumping core Tomas Carnecky
2010-01-06 8:11 ` Daniel [this message]
2010-01-07 5:07 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2010-01-06 8:20 Daniel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2b9e2ea1.461a9565.4b4445be.38bda@o2.pl \
--to=mjucde@o2$(echo .)pl \
--cc=git@vger$(echo .)kernel.org \
--cc=tom@dbservice$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox