--userns-block-fd can hang when given a closed descriptor
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- c, linux
- Área
- cli, operating-systems
Línea de trabajo
Empieza leyendo el análisis del argumento --userns-block-fd y el código de configuración alrededor de bubblewrap.c:3179-3180, donde se lee y se cierra el descriptor proporcionado. Comprueba cómo se asignan child_wait_fd y setup_finished_pipe y luego ejecuta ambas reproducciones del issue. Se considera terminado cuando los descriptores cerrados se rechazan con un error antes de que la configuración pueda quedarse bloqueada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
bubblewrap 0.13.1 accepts a closed --userns-block-fd descriptor and can reuse its number for its internal eventfd or, with --json-status-fd, its setup-completion pipe.
Both runs below hung until timeout -s KILL 20 killed them (status 137).
To reproduce:
bwrap --unshare-user --info-fd 1 --userns-block-fd 4 --ro-bind / / --proc /proc --dev /dev /bin/true 3<&- 4<&-
strace:
2865 openat(AT_FDCWD, "/proc", O_RDONLY|O_PATH) = 3
2865 eventfd2(0, EFD_CLOEXEC) = 4
2865 clone(child_stack=NULL, flags=CLONE_NEWNS|CLONE_NEWUSER|SIGCHLD) = 2866
2866 read(4, <unfinished ...>
2865 read(4, 0x7ffe9b5a5857, 1) = -1 EINVAL (Invalid argument)
2865 write(4, "\1\0\0\0\0\0\0\0", 8) = -1 EBADF (Bad file descriptor)
child_wait_fd gets descriptor 4. The parent's 1-byte read of opt_userns_block_fd fails with EINVAL. The parent closes that descriptor (bubblewrap.c:3180), which is also child_wait_fd. Its write to child_wait_fd fails with EBADF, leaving the child blocked.
With --json-status-fd:
bwrap --unshare-user --info-fd 1 --json-status-fd 2 --userns-block-fd 5 --ro-bind / / --proc /proc --dev /dev /bin/true 3<&- 4<&- 5<&- 6<&-
strace:
2939 openat(AT_FDCWD, "/proc", O_RDONLY|O_PATH) = 3
2939 eventfd2(0, EFD_CLOEXEC) = 4
2939 pipe2([5, 6], O_CLOEXEC) = 0
2939 clone(child_stack=NULL, flags=CLONE_NEWNS|CLONE_NEWUSER|SIGCHLD) = 2940
2940 read(4, <unfinished ...>
2939 read(5,
opt_userns_block_fd is the read end of setup_finished_pipe (descriptor 5). The parent blocks in its read (bubblewrap.c:3179) before writing child_wait_fd. The child blocks in its read of child_wait_fd.
A patched build checks descriptors with fcntl (fd, F_GETFD) during argument parsing. Both commands returned status 1:
bwrap: Invalid fd: 4: Bad file descriptor
bwrap: Invalid fd: 5: Bad file descriptor
- Lenguaje dominante
- C
- Estrellas
- 9.4k
- Forks
- 408
- Merge medio
- 6 d 14 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de containers/bubblewrap
-
README: writable --bind paths are not isolated from hardlinks created outside the sandboxPosiblemente ocupada @sairex53 la tomó hace 24 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
containers/bubblewrap#813 · 3 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
bubblewrap manpage is desynced from source codePosiblemente ocupada @huong8373tt-beep la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
containers/bubblewrap#767 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Related project comparisons in README.md are outdatedQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
containers/bubblewrap#743 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Example in REAMDE does not workAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
containers/bubblewrap#298 · 4 comentarios · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
containers/bubblewrap#819 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de containers/bubblewrap
Issues similares
-
XPM values line with more than one space between numbers raises ValueErrorPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
python-pillow/Pillow#10429 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
Los mantenedores suelen responder en 9 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Vulkan: create_device reads the device extension list after freeing it (random crash at start)Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 62/100
Revivedx/SavageWindRecomp#488 ·
Los mantenedores suelen responder en 1 día