msg205217 - (view) | Author: Bohuslav "Slavek" Kabrda (bkabrda) * | Date: 2013-12-04 12:06 |
A simple reproducer: python -c 'import readline' | xxd 0000000: 1b5b 3f31 3033 3468 .[?1034h This was reported at [1] and originally at [2]. The readline maintainer suggests [3] using: rl_variable_bind ("enable-meta-key", "off"); which was introduced in readline 6.1. Do you think it'd be safe to add the above line? Thanks. [1] https://bugzilla.redhat.com/show_bug.cgi?id=880393 [2] https://bugzilla.redhat.com/show_bug.cgi?id=593799 [3] http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00009.html |
msg205221 - (view) | Author: Antoine Pitrou (pitrou) *  | Date: 2013-12-04 15:00 |
I can't reproduce under Ubuntu 13.10. Is this Red Hat-specific? (according to Dave, """This is a readline bug; it looks like it should not emit those characters when stdout is not a tty""") |
msg205228 - (view) | Author: Vajrasky Kok (vajrasky) * | Date: 2013-12-04 15:51 |
Reproducible under Fedora 18. $ ./python -c "import readline" | hexdump -C 00000000 1b 5b 3f 31 30 33 34 68 |.[?1034h| 00000008 $ TERM=dumb ./python -c "import readline" | hexdump -C |
msg205293 - (view) | Author: Bohuslav "Slavek" Kabrda (bkabrda) * | Date: 2013-12-05 12:59 |
I can also reproduce it on Arch Linux. It seems that the bad characters are only output if env variable TERM starts with "xterm". |
msg218275 - (view) | Author: Antoine Pitrou (pitrou) *  | Date: 2014-05-11 15:17 |
We seem to have gotten bit by this in issue21425. Dave, is it possible for you to validate the proposed fix? I can't test this under Ubuntu. Setting priority to "high" as it seems to actually annoy many people: http://stackoverflow.com/questions/15760712/python-readline-module-prints-escape-character-during-import http://reinout.vanrees.org/weblog/2009/08/14/readline-invisible-character-hack.html http://lists.gnu.org/archive/html/bug-readline/2007-08/msg00004.html |
msg220336 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-06-12 09:21 |
Attached readline_disable_meta_key.patch: Implement the workaround suggested in (*), but only use the workaround if stdout is not a TTY (ex: output redirected), to limit the risk of regression. (*) http://lists.gnu.org/archive/html/bug-readline/2011-04/msg00009.html Extract of the patch: + if (!isatty(STDOUT_FILENO)) { + /* Issue #19884: Don't try to enable any meta modifier key the terminal + claims to support when it is called. On many terminals (ex: + xterm-256color), the meta key is used to send eight-bit characters + (ANSI sequence "\033[1034h"). */ + rl_variable_bind ("enable-meta-key", "off"); + } This issue becomes very annoying on my Fedora 20. The output of any Mercurial command now starts with "\033.[?1034h" (Mercurial uses Python 2.7). Example: haypo@smithers$ hg root|hexdump -C 00000000 1b 5b 3f 31 30 33 34 68 2f 68 6f 6d 65 2f 68 61 |.[?1034h/home/ha| 00000010 79 70 6f 2f 70 72 6f 67 2f 70 79 74 68 6f 6e 2f |ypo/prog/python/| 00000020 64 65 66 61 75 6c 74 0a |default.| 00000028 Fedora 18 changed the default TERM environment variable to "xterm-256color": http://fedoraproject.org/wiki/Features/256_Color_Terminals Workaround in your application (to run on unpatched Python): set the TERM environment variable to "dummy", or unset this variable. |
msg223823 - (view) | Author: Roundup Robot (python-dev)  | Date: 2014-07-24 10:25 |
New changeset 0177d8a4e82a by Victor Stinner in branch '2.7': Issue #19884: readline: Disable the meta modifier key if stdout is not a http://hg.python.org/cpython/rev/0177d8a4e82a New changeset 6303266beb80 by Victor Stinner in branch '3.4': Issue #19884: readline: Disable the meta modifier key if stdout is not a http://hg.python.org/cpython/rev/6303266beb80 New changeset f85a968f9e01 by Victor Stinner in branch 'default': (Merge 3.4) Issue #19884: readline: Disable the meta modifier key if stdout is http://hg.python.org/cpython/rev/f85a968f9e01 |
msg223824 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-07-24 10:25 |
I commited my patch. |
msg223864 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-07-24 18:02 |
The test fails on AMD64 OpenIndiana 2.7: http://buildbot.python.org/all/builders/AMD64%20OpenIndiana%202.7/builds/2354/steps/test/logs/stdio test test_readline failed -- Traceback (most recent call last): File "/export/home/buildbot/64bits/2.7.cea-indiana-amd64/build/Lib/test/test_readline.py", line 52, in test_init self.assertEqual(stdout, b'') AssertionError: '\x1b[?1034h' != '' |
msg223865 - (view) | Author: Ned Deily (ned.deily) *  | Date: 2014-07-24 18:24 |
The changes are also causing segfaults when readline is linked with BSD libedit (the default on OS X) rather than GNU readline: ====================================================================== FAIL: test_init (test.test_readline.TestReadline) ---------------------------------------------------------------------- Traceback (most recent call last): File "/py/dev/3x/source/Lib/test/test_readline.py", line 52, in test_init TERM='xterm-256color') File "/py/dev/3x/source/Lib/test/script_helper.py", line 69, in assert_python_ok return _assert_python(True, *args, **env_vars) File "/py/dev/3x/source/Lib/test/script_helper.py", line 55, in _assert_python "stderr follows:\n%s" % (rc, err.decode('ascii', 'ignore'))) AssertionError: Process return code is -11, stderr follows: Fatal Python error: Segmentation fault Current thread 0x00007fff75489310 (most recent call first): File "<frozen importlib._bootstrap>", line 321 in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1664 in load_module File "<frozen importlib._bootstrap>", line 540 in _check_name_wrapper File "<frozen importlib._bootstrap>", line 1110 in _load_backward_compatible File "<frozen importlib._bootstrap>", line 1140 in _load_unlocked File "<frozen importlib._bootstrap>", line 2175 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 2186 in _find_and_load File "<string>", line 1 in <module> |
msg223873 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-07-24 19:07 |
> The changes are also causing segfaults when readline is linked with BSD libedit (the default on OS X) rather than GNU readline: Oh wow. Do you have an idea of to fix the issue with libedit? Or make the code condition, only use it with native readline? |
msg223879 - (view) | Author: Ned Deily (ned.deily) *  | Date: 2014-07-24 19:44 |
Currently, readline.c uses #ifdef __APPLE__ to guard libedit-specific code (there is another open issue to generalize libedit support to other platforms). |
msg223889 - (view) | Author: Roundup Robot (python-dev)  | Date: 2014-07-24 20:12 |
New changeset f0ab6f9f0603 by Victor Stinner in branch '2.7': Issue #19884, readline: calling rl_variable_bind ("enable-meta-key", "off") http://hg.python.org/cpython/rev/f0ab6f9f0603 New changeset 3f08c1156050 by Victor Stinner in branch '3.4': Issue #19884, readline: calling rl_variable_bind ("enable-meta-key", "off") http://hg.python.org/cpython/rev/3f08c1156050 New changeset 0ed1801bf4bd by Victor Stinner in branch 'default': (Merge 3.4) Issue #19884, readline: calling rl_variable_bind http://hg.python.org/cpython/rev/0ed1801bf4bd |
msg224012 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-07-25 23:36 |
The test fails also on OpenBSD: http://buildbot.python.org/all/builders/x86%20OpenBSD%205.5%203.x/builds/671/steps/test/logs/stdio ====================================================================== FAIL: test_init (test.test_readline.TestReadline) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/python-builds/3.x.borja-openbsd-x86/build/Lib/test/test_readline.py", line 53, in test_init self.assertEqual(stdout, b'') AssertionError: b'\x1b[?1034h' != b'' |
msg224484 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-08-01 10:35 |
Oh, the test also fails on the new Red Hat 6 buildbot: http://buildbot.python.org/all/builders/x86%20RHEL%206%203.x/builds/4358/steps/test/logs/stdio ====================================================================== FAIL: test_init (test.test_readline.TestReadline) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/buildarea/3.x.coghlan-redhat/build/Lib/test/test_readline.py", line 53, in test_init self.assertEqual(stdout, b'') AssertionError: b'\x1b[?1034h' != b'' |
msg225008 - (view) | Author: Edd Barrett (Edd.Barrett) | Date: 2014-08-07 12:59 |
This problem shows up on OpenBSD too. It breaks 'hg view' also. |
msg225593 - (view) | Author: Benjamin Peterson (benjamin.peterson) *  | Date: 2014-08-20 23:05 |
It seems this bug was fixed properly by readline in version 6.3; rl_initialize won't put meta codes on the screen. Frankly, I'm surprised distros like Fedora haven't upgraded or patched readline themselves to fix this. Aren't other programs affected? Turning off "enable-meta-key" isn't great, since it doesn't work on older readline or libedit, and is probably technically a backwards compatibility problem. I think the best solution would be not call rl_initialize during the initialization of the readline module, but I'm not sure if that could create compatibility problems. |
msg226551 - (view) | Author: Ned Deily (ned.deily) *  | Date: 2014-09-08 01:30 |
Should this be a release blocker for 3.4.2? |
msg226558 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-09-08 05:57 |
The test fails on some platforms but it's not a regression. |
msg230345 - (view) | Author: David Edelsohn (David.Edelsohn) * | Date: 2014-10-31 14:42 |
Issue22773 provides a patch to export Readline version and skip the test for earlier releases of libreadline where turning off enable-meta-key does not work. |
msg230622 - (view) | Author: Roundup Robot (python-dev)  | Date: 2014-11-04 13:53 |
New changeset c4b5a5d44254 by Antoine Pitrou in branch '3.4': Issue #22773: fix failing test with old readline versions due to issue #19884. https://hg.python.org/cpython/rev/c4b5a5d44254 New changeset be374b8c40c8 by Antoine Pitrou in branch 'default': Issue #22773: fix failing test with old readline versions due to issue #19884. https://hg.python.org/cpython/rev/be374b8c40c8 |
msg230624 - (view) | Author: Roundup Robot (python-dev)  | Date: 2014-11-04 13:56 |
New changeset eba6e68e818c by Antoine Pitrou in branch '2.7': Issue #22773: fix failing test with old readline versions due to issue #19884. https://hg.python.org/cpython/rev/eba6e68e818c |
msg230676 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2014-11-05 14:01 |
Arfever, Antoine: If buildbots are happy (green), you can close the issue. (I'm answering to your question on IRC ;-)) |
msg236724 - (view) | Author: Maxime Belanger (Maxime Belanger) | Date: 2015-02-27 02:03 |
I think the version check (`readline._READLINE_VERSION < 0x0600`) is incorrect, as the test still fails for me on Mac OS X 10.9 with readline version 6.2 (0x602). Upgrading to 6.3 (0x603) fixes it, though. |
msg236734 - (view) | Author: STINNER Victor (vstinner) *  | Date: 2015-02-27 08:59 |
Mac OS X uses libedit, not libreadline. |
msg237154 - (view) | Author: Isaac Schwabacher (ischwabacher) * | Date: 2015-03-03 17:15 |
From the OP: > This was reported at [1] and originally at [2]. The readline maintainer suggests [3] using: > > rl_variable_bind ("enable-meta-key", "off"); > > which was introduced in readline 6.1. Do you think it'd be safe to add the above line? From 3.4.3 final: > @unittest.skipIf(readline._READLINE_VERSION < 0x0600 > and "libedit" not in readline.__doc__, > "not supported in this library version") The test currently fails on readline version 6.0. The version to test on needs a bump to 0x0610. |
msg237155 - (view) | Author: Isaac Schwabacher (ischwabacher) * | Date: 2015-03-03 17:25 |
Whoops, that's 0x0601. Though Maxime gives evidence that the version should in fact be 0x0603. (Note that while OS X ships with libedit over libreadline, anyone who wants to can install the real thing instead of that pale imitation; the test would have been skipped if Maxime were using libedit.) |
msg251656 - (view) | Author: Berker Peksag (berker.peksag) *  | Date: 2015-09-26 16:53 |
The version check doesn't work because 0ed1801bf4bd added #ifndef __APPLE__ to guard the code, so if you're using readline on OS X, that rl_variable_bind workaround won't work. There are two alternatives: 1) convert ifndef to ifdef and add a check for the ``using_libedit_emulation`` variable. #ifdef __APPLE__ if (using_libedit_emulation) { ... ... looks like a common idiom in readline.c. 2) just skip the test if _READLINE_VERSION < 0x0603 |
msg252096 - (view) | Author: Yogesh Joshi (iyogeshjoshi) | Date: 2015-10-02 09:15 |
I tried applying this patch and its failing and throwing the following error: patching file Lib/test/test_readline.py Hunk #1 FAILED at 1. Hunk #2 FAILED at 43. 2 out of 2 hunks FAILED -- saving rejects to file Lib/test/test_readline.py.rej patching file Modules/readline.c Hunk #1 FAILED at 1019. 1 out of 1 hunk FAILED -- saving rejects to file Modules/readline.c.rej I'm using Mac Os El Captain |
msg268780 - (view) | Author: Martin Panter (martin.panter) *  | Date: 2016-06-18 09:20 |
Yogesh: Victor’s patch has already been applied. What is left to do is another patch that enables Victor’s code on OS X when Gnu Readline is being used, as opposed to the usual Apple Editline. Also, I think it is valid to update the version check to 6.1. According to <https://cnswww.cns.cwru.edu/php/chet/readline/CHANGES>, enable-meta-key is in 6.1, but not 6.0. On 6.0 the code probably has no effect. |
msg268781 - (view) | Author: Martin Panter (martin.panter) *  | Date: 2016-06-18 09:31 |
Here is a patch to enable the workaround on OS X, and to adjust the test condition to 6.1. It would be nice if someone with OS X and Gnu Readline can confirm that this fixes the problem. |
msg273587 - (view) | Author: Orion Poplawski (opoplawski) | Date: 2016-08-24 20:04 |
I'm still seeing this test failure on EL6.8 with python 3.4.5: [268/391] test_readline testHistoryUpdates (test.test_readline.TestHistoryManipulation) ... ok test_init (test.test_readline.TestReadline) ... test test_readline failed FAIL ====================================================================== FAIL: test_init (test.test_readline.TestReadline) ---------------------------------------------------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/Python-3.4.5/Lib/test/test_readline.py", line 57, in test_init self.assertEqual(stdout, b'') AssertionError: b'\x1b[?1034h' != b'' ---------------------------------------------------------------------- Ran 2 tests in 0.111s FAILED (failures=1) With readline-devel-6.0-4.el6.x86_64. |
msg273596 - (view) | Author: Orion Poplawski (opoplawski) | Date: 2016-08-24 21:33 |
Updating the version check to 6.1 as in the patch from Martin certainly avoids the failing test. |
msg273686 - (view) | Author: Martin Panter (martin.panter) *  | Date: 2016-08-25 23:01 |
Thanks, I can try to commit the version fix part of the patch when I get a chance. What is EL6.8, is that a Red Hat (Enterprise Linux) thing? |
msg273757 - (view) | Author: Roundup Robot (python-dev)  | Date: 2016-08-27 04:10 |
New changeset 55ec5fdc3099 by Martin Panter in branch '2.7': Issue #19884: Avoid spurious output on OS X with Gnu Readline https://hg.python.org/cpython/rev/55ec5fdc3099 New changeset 782d9b5d2e90 by Martin Panter in branch '3.5': Issue #19884: Avoid spurious output on OS X with Gnu Readline https://hg.python.org/cpython/rev/782d9b5d2e90 New changeset 72e034afeb55 by Martin Panter in branch 'default': Issue #19884: Merge Readline updates from 3.5 https://hg.python.org/cpython/rev/72e034afeb55 |
msg273764 - (view) | Author: Martin Panter (martin.panter) *  | Date: 2016-08-27 07:16 |
I committed my patch in full, so hopefully the Gnu Readline situation on OS X is also improved. Original fixes went into 3.4, but my patch only went into 3.5+. |
|
Date | User | Action | Args |
2022-04-11 14:57:54 | admin | set | github: 64083 |
2016-08-27 07:16:55 | martin.panter | set | status: open -> closed versions: + Python 3.4 messages: + msg273764
resolution: fixed stage: patch review -> resolved |
2016-08-27 04:10:55 | python-dev | set | messages: + msg273757 |
2016-08-25 23:01:28 | martin.panter | set | messages: + msg273686 versions: + Python 3.6, - Python 3.4 |
2016-08-24 21:33:31 | opoplawski | set | messages: + msg273596 |
2016-08-24 20:04:12 | opoplawski | set | nosy: + opoplawski messages: + msg273587
|
2016-06-18 09:31:33 | martin.panter | set | files: + meta-osx.patch
messages: + msg268781 stage: needs patch -> patch review |
2016-06-18 09:20:21 | martin.panter | set | nosy: + martin.panter
messages: + msg268780 stage: needs patch |
2015-10-02 09:15:11 | iyogeshjoshi | set | nosy: + iyogeshjoshi messages: + msg252096
|
2015-09-26 16:53:56 | berker.peksag | set | nosy: + berker.peksag messages: + msg251656
|
2015-04-14 21:32:54 | r.david.murray | link | issue13164 superseder |
2015-03-22 05:13:48 | r.david.murray | link | issue23736 superseder |
2015-03-03 17:25:30 | ischwabacher | set | messages: + msg237155 |
2015-03-03 17:15:30 | ischwabacher | set | nosy: + ischwabacher messages: + msg237154
|
2015-02-27 08:59:04 | vstinner | set | messages: + msg236734 |
2015-02-27 02:03:31 | Maxime Belanger | set | nosy: + Maxime Belanger messages: + msg236724
|
2015-02-06 07:47:02 | vlee | set | nosy: + vlee
|
2014-12-20 07:25:36 | berker.peksag | link | issue23092 superseder |
2014-11-05 14:01:10 | vstinner | set | messages: + msg230676 |
2014-11-04 13:56:46 | python-dev | set | messages: + msg230624 |
2014-11-04 13:53:59 | python-dev | set | messages: + msg230622 |
2014-10-31 18:33:01 | Arfrever | set | nosy: + Arfrever
|
2014-10-31 14:42:33 | David.Edelsohn | set | nosy: + David.Edelsohn messages: + msg230345
|
2014-10-15 19:44:24 | ned.deily | link | issue22647 superseder |
2014-10-14 15:40:09 | skrah | set | nosy: - skrah
|
2014-10-10 16:56:40 | jcea | set | nosy: + jcea
|
2014-09-08 05:57:28 | vstinner | set | messages: + msg226558 |
2014-09-08 01:30:44 | ned.deily | set | messages: + msg226551 |
2014-08-20 23:05:49 | benjamin.peterson | set | nosy: + benjamin.peterson messages: + msg225593
|
2014-08-19 18:59:53 | geoffreyspear | set | nosy: + geoffreyspear
|
2014-08-07 13:13:56 | rpointel | set | nosy: + rpointel
|
2014-08-07 12:59:03 | Edd.Barrett | set | nosy: + Edd.Barrett messages: + msg225008
|
2014-08-01 10:35:39 | vstinner | set | messages: + msg224484 |
2014-07-25 23:36:33 | vstinner | set | messages: + msg224012 |
2014-07-24 20:12:55 | python-dev | set | messages: + msg223889 |
2014-07-24 19:44:20 | ned.deily | set | messages: + msg223879 |
2014-07-24 19:07:13 | vstinner | set | messages: + msg223873 |
2014-07-24 18:24:19 | ned.deily | set | nosy: + ned.deily messages: + msg223865
|
2014-07-24 18:02:27 | vstinner | set | status: closed -> open resolution: fixed -> (no value) messages: + msg223864
|
2014-07-24 10:25:35 | vstinner | set | status: open -> closed resolution: fixed messages: + msg223824
|
2014-07-24 10:25:02 | python-dev | set | nosy: + python-dev messages: + msg223823
|
2014-06-12 09:21:51 | vstinner | set | files: + readline_disable_meta_key.patch
nosy: + vstinner messages: + msg220336
keywords: + patch |
2014-05-11 15:17:05 | pitrou | set | priority: normal -> high versions: + Python 3.5, - Python 3.3 nosy: + skrah
messages: + msg218275
|
2013-12-05 12:59:32 | bkabrda | set | messages: + msg205293 |
2013-12-04 15:51:24 | vajrasky | set | nosy: + vajrasky messages: + msg205228
|
2013-12-04 15:00:53 | pitrou | set | nosy: + dmalcolm, pitrou
messages: + msg205221 versions: + Python 3.4 |
2013-12-04 12:06:16 | bkabrda | create | |