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

Aperta
#1,863 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
44/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
C
Stelle
11.7k
Fork
1.4k
Merge medio
1g 1h
PR unite (30g)
28

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di veracrypt/VeraCrypt

Tutte le issue di veracrypt/VeraCrypt

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.