SIGSEGV (use-after-free) in FUSE session teardown: MFMount Channel.close / dispatch_channel_cancel

Abierto
#1,863 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
44/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
c

Línea de trabajo

Start by tracing VeraCrypt’s mount/unmount flow into the FUSE teardown calls named in the crash stack: fuse_chan_destroy, fuse_session_destroy, and fuse_destroy. The report points to MFMount Channel.close() and dispatch_channel_cancel, but does not identify the relevant source files or tests. Reproduce the teardown after sustained I/O and verify that it no longer faults.

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

Descripción

Crash: SIGSEGV (use-after-free) in FUSE session teardown

Environment

  • VeraCrypt: 1.26.29
  • macOS: 26.6.2 (25G83), Apple Silicon (arm64)
  • macFUSE: 5.3.3

Crash

  • Exception: EXC_BAD_ACCESS (SIGSEGV), KERN_INVALID_ADDRESS at 0x0000000000000110
  • Faulting thread (single-threaded child, fork pre-exec):
libdispatch  _dispatch_root_queue_push+228
libdispatch  dispatch_channel_cancel+52
MFMount      Channel.close()+160
MFMount      closure #1 in MFChannelClose(_:)+84
MFMount      _MFChannelClose+32
MFMount      MFChannelClose+40
libfuse.2    fuse_chan_destroy+104
libfuse.2    fuse_session_destroy+44
libfuse.2    fuse_destroy+428
VeraCrypt    (mount/unmount flow)

Looks like a use-after-free of a dispatch channel in the FUSE session teardown path (Channel.close() -> dispatch_channel_cancel).

Repro hint: after sustained I/O on a mounted volume, the volume returns Device not configured (ENXIO); session teardown then intermittently faults as above. macFUSE 5.1.3 exhibits the same behavior.

Full .ips crash report available on request.

Lenguaje dominante
C
Estrellas
11.7k
Forks
1.4k
Merge medio
1 d 1 h
PR fusionados (30 d)
28

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

  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 veracrypt/VeraCrypt

Todos los issues de veracrypt/VeraCrypt

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.