Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

w: exits with error when utmp session references a missing tty device

Abierto
#718 0 comentarios 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Franklin-Qi ya está trabajando en esto.

Desde el 16/6/2026.

  • #719 de @Franklin-Qi — abierto

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
linux, rust

Línea de trabajo

Comienza con tests/by-util/test_w.rs y reproduce el fallo usando el registro utmp obsoleto proporcionado; después ejecuta la prueba específica o cargo test. Sigue la ruta del comando w que informa del dispositivo tty ausente y verifica que las sesiones que hacen referencia a dispositivos inexistentes ya no hagan que w termine con un error, mientras la prueba pasa en ubuntu-latest.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

w

Summary

On Linux, w can fail with exit code 1 when /var/run/utmp (or /run/utmp) contains a user session whose tty device does not exist under /dev/.

This is visible in CI (cargo test on ubuntu-latest) and can also happen on real systems when utmp records reference stale or non-device tty names (e.g. certain pts/N, seat names, or leftover entries).

This fails on ubuntu-latest in GitHub Actions, while the same test often passes locally when no utmp records are present.

test test_watch::test_valid_interval_comma ... ok

failures:

---- test_w::test_option_short stdout ----
bin: "/home/runner/work/procps/procps/target/debug/procps"
run: /home/runner/work/procps/procps/target/debug/procps w --short

thread 'test_w::test_option_short' (11461) panicked at tests/by-util/test_w.rs:44:42:
Command was expected to succeed. code: 1
stdout = 
 stderr = w: failed to fetch user info: No such file or directory (os error 2)

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    test_w::test_option_short

test result: FAILED. 221 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.90s

error: test failed, to rerun pass `-p procps --test tests`
Error: Process completed with exit code 101.

Local Reproduction

Create a utmp record with a user session pointing at a non-existent tty:

python3 << 'PY'
import ctypes, os, time

class ExitStatus(ctypes.Structure):
    _fields_ = [("e_termination", ctypes.c_short), ("e_exit", ctypes.c_short)]

class Utmpx(ctypes.Structure):
    _fields_ = [
        ("ut_type", ctypes.c_short), ("_pad", ctypes.c_short),
        ("ut_pid", ctypes.c_int), ("ut_line", ctypes.c_char * 32),
        ("ut_id", ctypes.c_char * 4), ("ut_user", ctypes.c_char * 32),
        ("ut_host", ctypes.c_char * 256), ("ut_exit", ExitStatus),
        ("ut_session", ctypes.c_int), ("ut_tv_sec", ctypes.c_long),
        ("ut_tv_usec", ctypes.c_long), ("ut_addr_v6", ctypes.c_int * 4),
        ("reserved", ctypes.c_char * 20),
    ]

u = Utmpx()
u.ut_type = 7  # USER_PROCESS
u.ut_pid = os.getpid()
u.ut_line = b"no-such-tty-ci"
u.ut_user = b"testuser"
u.ut_tv_sec = int(time.time())
open("/tmp/fake-ci.utmp", "wb").write(bytes(u))
print("wrote /tmp/fake-ci.utmp")
PY

sudo cp /tmp/fake-ci.utmp /run/utmp
cargo run -q w --short
echo "exit code: $?"
sudo rm -f /run/utmp
Lenguaje dominante
Rust
Estrellas
117
Forks
41
Merge medio
1 d 41 min
PR fusionados (30 d)
20

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de uutils/procps

Todos los issues de uutils/procps

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.