public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
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

  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