Hello all,

I've recently started to note an issue with git rebase -i failing with
alarming frequency, especially on one of my repositories, claiming
that index.lock could not be created because it exists, even though it
doesn't and nothing else seems to be locking the index. The rebase
bombs more usually during the initial checkout than during any other
of the steps.

The problem is somewhat randomly reproducible, as it doesn't happen
100% of the time. It also seems to happen more consistently with more
recent git versions, or at least with my custom built git than with
the distro-shipped one.

A somewhat problematic git bisect has allowed me to identify commit
03b86647722f11ccc321cd7279aa49b811d17cc2 as the first bad commit.

The problem has all signs of a timing issue, which I'm having problems
isolating, although simply providing a timeout on the index lock calls
seems to fix it. Making git stall instead of die on error allowed me
to obtain this backtrace which I suspect will not be particularly
useful:

#0 0x00000000004c4666 in unable_to_lock_message
(path=path@entry=0x1bad940 ".git/index", err=<optimized out>,
buf=buf@entry=0x7ffd3b990900) at lockfile.c:158
#1 0x00000000004c46c6 in unable_to_lock_die (path=path@entry=0x1bad940
".git/index", err=<optimized out>) at lockfile.c:167
#2 0x00000000004c480b in hold_lock_file_for_update_timeout
(lk=lk@entry=0x1bd7be0, path=0x1bad940 ".git/index", flags=<optimized
out>, timeout_ms=timeout_ms@entry=0) at lockfile.c:177
#3 0x00000000004e6e2a in hold_lock_file_for_update (flags=1,
path=<optimized out>, lk=0x1bd7be0) at lockfile.h:165
#4 hold_locked_index (lk=lk@entry=0x1bd7be0,
die_on_error=die_on_error@entry=1) at read-cache.c:1411
#5 0x0000000000420cb0 in merge_working_tree (old=0x7ffd3b990a20,
old=0x7ffd3b990a20, new=0x7ffd3b990a00, new=0x7ffd3b990a00,
writeout_error=0x7ffd3b9909c0, opts=0x7ffd3b992a31)
at builtin/checkout.c:471
#6 switch_branches (new=0x7ffd3b990a00, opts=0x7ffd3b992a31) at
builtin/checkout.c:826
#7 checkout_branch (new=0x7ffd3b990a00, opts=0x7ffd3b992a31) at
builtin/checkout.c:1123
#8 cmd_checkout (argc=<optimized out>, argv=<optimized out>,
prefix=<optimized out>) at builtin/checkout.c:1273
#9 0x0000000000405e7e in run_builtin (argv=0x7ffd3b992480, argc=2,
p=0x7acab0 <commands+336>) at git.c:350
#10 handle_builtin (argc=2, argv=0x7ffd3b992480) at git.c:535
#11 0x0000000000405021 in run_argv (argv=0x7ffd3b9922d8,
argcp=0x7ffd3b9922bc) at git.c:581
#12 main (argc=2, av=<optimized out>) at git.c:689

Additional information: I have the bash git prompt enabled, I do not
have anything else accessing that repository at the same time, and the
repository is “spread out” across multiple workdirs created with git
new-workdir, each with a different branch checked out. It is also
usually accessed under a symlink (cd ~/shortcut/repo/branch rather
than ~/full/path/to/repo/branch). Running Debian unstable with Linux
4.1.0 on an SSD-backed ext4 partition mounted with data=ordered. I
can't thnk of any other detail that might be even just remotely
involved in this odd issue. Any suggestions on how to debug it are
welcome.

Best regards,

-- 
Giuseppe "Oblomov" Bilotta
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to