"Enter" key unexpected behaviour while launching a redis shell
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Reproduce the issue with the provided redis-cli task on Ubuntu 20.04 and inspect runner._run_body, where the problem is suspected. Compare its behavior with direct os.execve execution and review the mentioned pseudo-terminal, pty, thread handling, and fcntl interactions. Done means pressing Enter runs the Redis command instead of inserting a line break.
Written by the indexing model from the issue text.
Description
I think my issue is linked to https://github.com/pyinvoke/invoke/issues/733
python: 3.10.5
invoke: 2.0.0
os: Ubuntu 20.04
I want to open a redis shell, using redis-cli.
from invoke import task
@task()
def test(context):
context.run("redis-cli", pty=True)
The problem is the "Enter" key prints a linebreak, instead of running the Redis command.
After some digging in the code, I found out the actual execution of the command in invoke is done by os.execve(shell, [shell, "-c", command], env). If I run this line in a python shell, it works as expected, the issue only happens when running the code through runner._run_body, probably because of a problem with the thread handling.
I'd be happy to help debugging / fixing this issue, but I don't have a big understanding on how pseudo-terminals / pty / fcntl work, so I'd need some help doing this.
- Dominant language
- Python
- Stars
- 4.8k
- Forks
- 412
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pyinvoke/invoke
-
[Security] Shell injection via Context.cd() path argument — metacharacters not escaped (CWE-78) Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
-
hcocena Openpolicies-accepted pre-review precheck-passed
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Bioconductor/BiocContributions#214 · 5 comments ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
TencentCloud/Octop#1169 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
521xueweihan/HelloGitHub#3778 ·
-
The version checker's trailing attribute region has no control for a less-than inside a quoted value Openarea: dashboard area: tests bug perceived difficulty: 2 python
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Nitjsefnie-Harness-Commons/daedalus#1105 · 1 comment ·