[Bug 6859] New: histedit broken with ncurses patchlevel 20231111

mercurial-bugs at mercurial-scm.org mercurial-bugs at mercurial-scm.org
Tue Dec 12 10:40:44 UTC 2023


https://bz.mercurial-scm.org/show_bug.cgi?id=6859

            Bug ID: 6859
           Summary: histedit broken with ncurses patchlevel 20231111
           Product: Mercurial
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: histedit
          Assignee: bugzilla at mercurial-scm.org
          Reporter: jcristau at debian.org
                CC: mercurial-devel at mercurial-scm.org
    Python Version: ---

>From https://bugs.debian.org/1058041:

Since a ncurses upgrade in testing recently `hg histedit` seems to
crash consistently, upon trying to apply the changes:

> Traceback (most recent call last):
>   File "/usr/bin/hg", line 59, in <module>
>     dispatch.run()
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 142, in run
>     status = dispatch(req)
>              ^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 231, in dispatch
>     status = _rundispatch(req)
>              ^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 275, in _rundispatch
>     ret = _runcatch(req) or 0
>           ^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 456, in _runcatch
>     return _callcatch(ui, _runcatchfunc)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 466, in _callcatch
>     return scmutil.callcatch(ui, func)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/scmutil.py", line 152, in callcatch
>     return func()
>            ^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 446, in _runcatchfunc
>     return _dispatch(req)
>            ^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1271, in _dispatch
>     return runcommand(
>            ^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 904, in runcommand
>     ret = _runcommand(ui, options, cmd, d)
>           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1283, in _runcommand
>     return cmdfunc()
>            ^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/dispatch.py", line 1269, in <lambda>
>     d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
>                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/mercurial/util.py", line 1878, in check
>     return func(*args, **kwargs)
>            ^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/hgext/histedit.py", line 1918, in histedit
>     return _chistedit(ui, repo, freeargs, opts)
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3/dist-packages/hgext/histedit.py", line 1764, in _chistedit
>     curses.endwin()
> _curses.error: endwin() returned ERR

Debian's ncurses package maintainer says:

> > I am not familiar with Mercurial, but most likely this has been
> > triggered by the following change in the 2023111 patchlevel:
> >
> > ,----
> > | 20231111
> > | 	+ modify endwin() to return an error if it is called again without an
> > | 	  intervening screen update (report by Rajeev Pillai, NetBSD #57592).
> > `----

> I now had a look at the histedit code, and it does this:

> ,----
> |         with util.with_lc_ctype():
> |             rc = curses.wrapper(functools.partial(_chisteditmain, repo, rules))
> |         curses.echo()
> |         curses.endwin()
> `----

> AFAICS, invoking curses.echo() and curses.endwin() is superfluous
> because curses.wrapper already does that for you, and calling
> curses.endwin() twice throws an error with the newer ncurses.  Removing

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


More information about the Mercurial-devel mailing list