Skip to content

v0.11.6

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Oct 13:27
· 8 commits to main since this release
3926896

Fixed

  • On Unix, a program that exists but cannot be executed now fails
    TerminalBuilder::spawn with an Error::Spawn that says why, and
    termlens inspect exits 2 with that message (#563). Typical causes are a
    missing #! interpreter, an interpreter that is not a program, a missing
    dynamic loader, and an argument list over the kernel's limit. The message
    names the interpreter, with any \r that CRLF line endings left on it
    shown escaped. spawn used to return Ok with a child already killed by
    SIGABRT (fatal runtime error: assertion failed: output.write(&bytes).is_ok()), which inspect showed as exited: killed by signal: Aborted. portable-pty closed the pipe std reports a failed
    exec through, so on Unix termlens now starts the child itself. Program
    resolution, the environment, the session and the signals are unchanged,
    and the child still inherits no descriptor besides its terminal. A
    working directory the child cannot enter is now named in the error. A
    few rare setups are still left to portable-pty, as before, and
    docs/DESIGN.md lists them.
  • The second writer termlens opens on the PTY master is close-on-exec. A
    process the test started while a terminal was alive inherited it before,
    which kept the master open in a process unrelated to the terminal.
  • With TERM set twice through .env, XTGETTCAP's TN reply reports the
    later value, the one the child gets. It reported the first, so an
    application could get two answers to "which terminal is this?".