Show 64 quoted lines
> 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(-)