https://bz.mercurial-scm.org/show_bug.cgi?id=6614
Bug ID: 6614 Summary: "hg show work" silently fails on Windows when running through MSYS/Cygwin Product: Mercurial Version: stable branch Hardware: PC OS: Windows Status: UNCONFIRMED Severity: feature Priority: wish Component: Mercurial Assignee: bugzi...@mercurial-scm.org Reporter: mhent...@mozilla.com CC: mercurial-devel@mercurial-scm.org Python Version: --- To reproduce: 1. Install MSYS2 (https://www.msys2.org/) 2. Start the MSYS2 shell 3. `pacman -S python-pip gcc libcrypt-devel` 4. `pip install mercurial` 5. Rename /usr/bin/more.exe (e.g. to /usr/bin/more.exe.bak) 6. Go to an hg repo and run `hg show work` HG will silently fail. ----- What's going on under-the-hood is that HG's default pager is `more`, but if it falls back to `C:\Windows\System32\more.com`, then the process halts (without error) at this line: https://www.mercurial-scm.org/repo/hg/file/6.0/mercurial/ui.py#l1527 The PDB backtrace is: (Pdb) bt <python3>\lib\bdb.py(578)run() -> exec(cmd, globals, locals) <string>(1)<module>() <python3>\scripts\hg(61)<module>() -> dispatch.run() <python3>\lib\site-packages\mercurial\dispatch.py(144)run() -> status = dispatch(req) <python3>\lib\site-packages\mercurial\dispatch.py(250)dispatch() -> status = _rundispatch(req) <python3>\lib\site-packages\mercurial\dispatch.py(294)_rundispatch() -> ret = _runcatch(req) or 0 <python3>\lib\site-packages\mercurial\dispatch.py(470)_runcatch() -> return _callcatch(ui, _runcatchfunc) <python3>\lib\site-packages\mercurial\dispatch.py(480)_callcatch() -> return scmutil.callcatch(ui, func) <python3>\lib\site-packages\mercurial\scmutil.py(153)callcatch() -> return func() <python3>\lib\site-packages\mercurial\dispatch.py(460)_runcatchfunc() -> return _dispatch(req) <python3>\lib\site-packages\mercurial\dispatch.py(1274)_dispatch() -> lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions <python3>\lib\site-packages\mercurial\dispatch.py(918)runcommand() -> ret = _runcommand(ui, options, cmd, d) <python3>\lib\site-packages\mercurial\dispatch.py(1285)_runcommand() -> return cmdfunc() <python3>\lib\site-packages\mercurial\dispatch.py(1271)<lambda>() -> d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) <python3>\lib\site-packages\mercurial\util.py(1888)check() -> return func(*args, **kwargs) <python3>\lib\site-packages\hgext\show.py(155)show() -> ui.pager(b'show') <python3>\lib\site-packages\mercurial\ui.py(1453)pager() -> if self._runpager(pagercmd, pagerenv): <python3>\lib\site-packages\mercurial\ui.py(1527)_runpager() -> os.dup2(pager.stdin.fileno(), procutil.stderr.fileno()) ----- Other fun details * It works properly in the Command Prompt and Windows Terminal * Running MSYS2 with `SET MSYS=enable_pcon` ("hey, leverage Windows' new ConPTY feature") doesn't resolve the issue * I don't know enough about fileno's to understand why the python process just ends without ceremony - no error, no fanfare, just bumped back to the prompt * This bug report's details were created against hg 6.0, but I couldn't specify such with the `Version` field because 6.0 is hot off the presses. However, this isn't a regression, and has been around since 5.9.3 for sure, and back to the early 5.x releases. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel