[Bug 4858] New: Share extension can cause wlock vs lock deadlock

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Mon Sep 28 23:57:42 UTC 2015


http://bz.selenic.com/show_bug.cgi?id=4858

            Bug ID: 4858
           Summary: Share extension can cause wlock vs lock deadlock
           Product: Mercurial
           Version: default branch
          Hardware: PC
                OS: Mac OS
            Status: UNCONFIRMED
          Severity: bug
          Priority: normal
         Component: share
          Assignee: bugzilla at selenic.com
          Reporter: durham at fb.com
                CC: mercurial-devel at selenic.com

If you have repos foo and bar, where bar is a shared working copy of foo, it's
possible to enter a deadlock when doing a rebase in one working copy, and a hg
book -d in the other.

The problem is that shared tries to write bookmarks back to the source repo
after it has already taken the source repo lock but before it has taken the
source repo wlock.

Example:
hg init foo
hg share foo bar
hg -R bar rebase ...  &
hg -R foo book -d ...

What happens
1) rebase wlock's bar
2) rebase lock's foo
3) book-d wlock's foo
4.a) book-d hangs trying to lock foo
4.b) rebase hangs trying to wlock foo  (so it can copy the bookmark writes from
foo to bar)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list