mharbison72 added a comment.

  In https://phab.mercurial-scm.org/D2720#44396, @indygreg wrote:
  
  > My only explanation is this is stdout output buffering and things are 
really hanging on the next read operation.
  >
  > Maybe try sprinkling some `ui.fout.flush()` and/or `util.stdout.flush()` 
and/or `sys.stdout.flush()` calls throughout the debug command? Maybe at the 
first thing in the loop that evaluates commands to execute?
  
  
  Both `util.stdout.flush()` and `ui.fout.flush()` get a little further in the 
same command; `sys.stdout.flush()` has no effect, when added at the top of the 
loop.  But then it stalls on remote output:
  
    ...
    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\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\x020\n
    i>     \x00\x00\x00\x00\x00\x00\x00\x00
    i> write(2) -> 2:
    i>     0\n
    i> flush() -> None
    o> readline() -> 2:
    o>     0\n
    o> readline() -> 2:
    o>     1\n
    o> read(1) -> 1: 0
    result: 0
    remote output:
  
  So I added a self.flush() inside ui._write() because I figured this is a 
problem on the remote end (and probably not localized like the debug command), 
but that didn't do anything.  (ui._write_err() already flushes, and has a 
comment about stderr may be buffered on Windows.)
  
  IDK if this means anything, but when it is stuck and I hit Ctrl + C, instead 
of terminating the test, the test simply continues with the script, and then 
hangs on the next 'remote output:' line.  Typically, Ctrl + C ends the test 
runner.

REPOSITORY
  rHG Mercurial

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

To: indygreg, #hg-reviewers
Cc: mharbison72, mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to