D2720: debugcommands: introduce actions to perform deterministic reads

mharbison72 (Matt Harbison) phabricator at mercurial-scm.org
Fri Mar 9 17:38:54 UTC 2018


mharbison72 added a comment.


  In https://phab.mercurial-scm.org/D2720#44288, @indygreg wrote:
  
  > In https://phab.mercurial-scm.org/D2720#44221, @mharbison72 wrote:
  >
  > > This patch seems to deadlock on Windows when running test-ssh-proto-unbundle.t.  There are two python processes idling:
  > >
  > > Past experience says that something needs to be flushed- stdout (and maybe stderr?) are full buffered on Windows IIRC.  The following failure with this patch might also point to that:
  >
  >
  > Hmmm.
  >
  > We explicitly create the pipes between the processes as unbuffered (`bufsize=0`). That being said, I would not at all be surprised if we need to throw a `flush()` in here somewhere.
  >
  > Could you please run the test with `run-tests.py -d` and see where it is deadlocking?
  >
  > The test failure due to the `o>` block is likely due to buffering or a race condition when writing to stdout of the `hg debugwireproto` process. I'll look into that after we fix the deadlock (since fixing might change order of things and I don't want to debug this in a system that is changing).
  
  
  It looks like the middle of line 84.  Here's the relevant output, from the start of the stuck command on 43 (the off-by-one in the SALT line is odd, but the other lines are line that too, so I assume it's a zero based index thing):
  
    + echo SALT1520615870 42 0
    SALT1520615870 42 0
    + debugwireproto
    ++ cat -
    + commands='command unbundle
    # This is "force" in hex.
        heads 666f726365
        PUSHFILE ../initial.v1.hg
    eread 115'
    + echo 'testing ssh1'
    testing ssh1
    ++ hg log -r tip -T '{node}'
    + tip=0000000000000000000000000000000000000000
    + echo 'command unbundle
    # This is "force" in hex.
        heads 666f726365
        PUSHFILE ../initial.v1.hg
    eread 115'
    + hg --verbose debugwireproto --localssh --noreadstderr
    creating ssh peer from handshake results
    i> write(104) -> 104:
    i>     hello\n
    i>     between\n
    i>     pairs 81\n
    i>     0000000000000000000000000000000000000000-0000000000000000000000000000000000000000
    i> flush() -> None
    o> readline() -> 4:
    o>     384\n
    o> readline() -> 384:
    o>     capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=
    generaldelta,revlogv1 bundle2=HG20%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror
    %3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aphases%3Dheads%0Apushkey%0Arem
    ote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN\n
    o> readline() -> 2:
    o>     1\n
    o> readline() -> 1:
    o>     \n
    sending unbundle command
    i> write(9) -> 9:
    i>     unbundle\n
    i> write(9) -> 9:
    i>     heads 10\n
    i> write(10) -> 10: 666f726365
    i> flush() -> None
    o> readline() -> 2:
    o>     0\n
    i> write(4) -> 4:
    i>     426\n
    i> write(426) -> 426:
    i>     HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x0
    0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
    x00>cba485ca3678256e044428f70f58291196f6e9de\n
    i>     test\n
    i>     0 0\n
    i>     foo\n
    i>     \n
    i>     initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00
    \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
    00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x
    00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n
    i>     \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xa
    f\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
    \x00\x00\x00\x00\x00\x00\x00\x00\

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2720

To: indygreg, #hg-reviewers
Cc: mharbison72, mercurial-devel


More information about the Mercurial-devel mailing list