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

オープン
#1,863 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
44/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
c

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
C
スター
11.7k
フォーク
1.4k
平均マージ
1日 1時間
マージ済み PR(30日)
28

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

veracrypt/VeraCrypt のほかの issue

veracrypt/VeraCrypt の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。