FSKit passthrough sample fails to mount

After building the sample and enabling the file system extension the mount command is freezing. Any tips how to diagnose that?

The logs show the following: log stream --style compact --info --debug --predicate 'subsystem == "com.apple.FSKit" OR process CONTAINS[c] "samplecode"' Filtering the log data using "subsystem == "com.apple.FSKit" OR process CONTAINS[c] "samplecode"" Timestamp Ty Process[PID:TID] 2026-03-17 15:15:51.832 I mount[16111:d88caa] [com.apple.FSKit:default] FSClient setting up connection to fskitd 2026-03-17 15:15:51.833 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[liveFilesMountServiceDelegate listener:shouldAcceptNewConnection:]: start 2026-03-17 15:15:51.833 Df fskitd[589:d88a5f] [com.apple.FSKit:default] Incomming connection, entitled 0 2026-03-17 15:15:51.833 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[liveFilesMountServiceDelegate listener:shouldAcceptNewConnection:]: accepting connection 2026-03-17 15:15:51.833 Df fskitd[589:d88a5f] [com.apple.FSKit:default] Hello FSClient! entitlement no 2026-03-17 15:15:51.834 Df mount[16111:d88caa] [com.apple.FSKit:default] Setting remote protocol to all XPC 2026-03-17 15:15:51.834 Df fskitd[589:d88a5f] [com.apple.FSKit:default] About to get current agent for 501 2026-03-17 15:15:51.834 I fskitd[589:d88a5f] [com.apple.FSKit:default] About to call to fskit_agent 2026-03-17 15:15:51.835 I fskit_agent[10123:d877d9] [com.apple.FSKit:default] Getting extensions 2026-03-17 15:15:51.836 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[fskitdAgentManager currentExtensionForShortName:auditToken:replyHandler:]_block_invoke: Found extension for fsShortName (<private>) 2026-03-17 15:15:51.837 I fskitd[589:d88a5f] [com.apple.FSKit:default] Probe starting on <private> 2026-03-17 15:15:51.837 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[FSResourceManager getResourceState:]:found:<private> 2026-03-17 15:15:51.837 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[FSResourceManager addTaskUUID:resource:]:<private>: Adding task (<private>) 2026-03-17 15:15:51.837 Df fskitd[589:d87c31] [com.apple.FSKit:default] About to get current agent for 501 2026-03-17 15:15:51.837 I fskitd[589:d87c31] [com.apple.FSKit:default] About to call to fskit_agent 2026-03-17 15:15:51.837 I fskit_agent[10123:d877d9] [com.apple.FSKit:default] Getting extensions 2026-03-17 15:15:51.838 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[fskitdXPCServer getExtensionModuleFromID:forToken:]_block_invoke: Found extension <private>, attrs <private> 2026-03-17 15:15:51.838 Db fskitd[589:d87c31] [com.apple.FSKit:default] applyResource starting with resource <private> kind 4

Answered by DTS Engineer in 880677022

Please try again after a restart.

I went through this process myself and hit very similar symptoms. I found that fskitd had a bunch of threads stuck like this:

816  _dispatch_call_block_and_release + 32 (libdispatch.dylib + 7004) [0x19b4ceb5c]
  816  ??? (fskitd + 132900) [0x100988724]
    816  ??? (fskitd + 86796) [0x10097d30c]
      816  ??? (fskitd + 87588) [0x10097d624]
        816  ??? (fskitd + 50740) [0x100974634]
          816  objc_sync_enter + 20 (libobjc.A.dylib + 70452) [0x19b245334]
            816  <patched truncated backtrace>
              816  __ulock_wait2 + 8 (libsystem_kernel.dylib + 60532) [0x19b656c74]
               *816  ??? (kernel.release.t6031 + 6477368) [0xfffffe0008ea1638] (blocked by turnstile waiting for fskitd [634] thread 0x30444d)

Worse yet, the number of threads kept growing, every time I retried the mount command!

I was able to clear this by restarting, after which the mount command worked as expected.

I did some spelunking based on internal resources and it seems that these threads are deadlocked due to some previous error starting the extension. Hence my idea to restart, in an attempt to clear that state.

I’ve filed my own internal bug about this (r. 172914665).

Lemme know how you get along.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

You’re code signing your app and app extension, right?

There was a very similar report last week that was caused by a failure to sign.

The logs show the following

That’s quite hard to read. See tip 5 in Quinn’s Top Ten DevForums Tips for advice on how to post preformatted text.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Yes, both are signed

Executable=/Users/alexf/Library/Developer/Xcode/DerivedData/Passthrough-fmtxodvbsknmqegwvscnzsczlopk/Build/Products/Debug/PassthroughAppEx.appex/Contents/MacOS/PassthroughAppEx
Identifier=com.example.apple-samplecode.PassthroughXXXXXXXX.AppEx
Format=bundle with Mach-O thin (arm64)
CodeDirectory v=20400 size=476 flags=0x0(none) hashes=3+7 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=9abcde7d8b79d23164600c46c55cdace7136690a
CandidateCDHashFull sha256=9abcde7d8b79d23164600c46c55cdace7136690aecb06f89082b53853a045b76
Hash choices=sha256
CMSDigest=9abcde7d8b79d23164600c46c55cdace7136690aecb06f89082b53853a045b76
CMSDigestType=2
CDHash=9abcde7d8b79d23164600c46c55cdace7136690a
Signature size=4781
Authority=XXXXXXXXXXXXX
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=17 Mar 2026 at 15:00:17
Info.plist entries=21
TeamIdentifier=XXXXXXXX
Sealed Resources version=2 rules=13 files=3
Internal requirements count=1 size=216```

Attaching the logs again:

Filtering the log data using "subsystem == "com.apple.FSKit" OR process CONTAINS[c] "samplecode""
Timestamp               Ty Process[PID:TID]
2026-03-17 15:15:51.832 I  mount[16111:d88caa] [com.apple.FSKit:default] FSClient setting up connection to fskitd
2026-03-17 15:15:51.833 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[liveFilesMountServiceDelegate listener:shouldAcceptNewConnection:]: start
2026-03-17 15:15:51.833 Df fskitd[589:d88a5f] [com.apple.FSKit:default] Incomming connection, entitled 0
2026-03-17 15:15:51.833 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[liveFilesMountServiceDelegate listener:shouldAcceptNewConnection:]: accepting connection
2026-03-17 15:15:51.833 Df fskitd[589:d88a5f] [com.apple.FSKit:default] Hello FSClient! entitlement no
2026-03-17 15:15:51.834 Df mount[16111:d88caa] [com.apple.FSKit:default] Setting remote protocol to all XPC
2026-03-17 15:15:51.834 Df fskitd[589:d88a5f] [com.apple.FSKit:default] About to get current agent for 501
2026-03-17 15:15:51.834 I  fskitd[589:d88a5f] [com.apple.FSKit:default] About to call to fskit_agent
2026-03-17 15:15:51.835 I  fskit_agent[10123:d877d9] [com.apple.FSKit:default] Getting extensions
2026-03-17 15:15:51.836 Db fskitd[589:d88a5f] [com.apple.FSKit:default] -[fskitdAgentManager currentExtensionForShortName:auditToken:replyHandler:]_block_invoke: Found extension for fsShortName (<private>)
2026-03-17 15:15:51.837 I  fskitd[589:d88a5f] [com.apple.FSKit:default] Probe starting on <private>
2026-03-17 15:15:51.837 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[FSResourceManager getResourceState:]:found:<private>
2026-03-17 15:15:51.837 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[FSResourceManager addTaskUUID:resource:]:<private>: Adding task (<private>)
2026-03-17 15:15:51.837 Df fskitd[589:d87c31] [com.apple.FSKit:default] About to get current agent for 501
2026-03-17 15:15:51.837 I  fskitd[589:d87c31] [com.apple.FSKit:default] About to call to fskit_agent
2026-03-17 15:15:51.837 I  fskit_agent[10123:d877d9] [com.apple.FSKit:default] Getting extensions
2026-03-17 15:15:51.838 Db fskitd[589:d87c31] [com.apple.FSKit:default] -[fskitdXPCServer getExtensionModuleFromID:forToken:]_block_invoke: Found extension <private>, attrs <private>
2026-03-17 15:15:51.838 Db fskitd[589:d87c31] [com.apple.FSKit:default] applyResource starting with resource <private> kind 4```

Please try again after a restart.

I went through this process myself and hit very similar symptoms. I found that fskitd had a bunch of threads stuck like this:

816  _dispatch_call_block_and_release + 32 (libdispatch.dylib + 7004) [0x19b4ceb5c]
  816  ??? (fskitd + 132900) [0x100988724]
    816  ??? (fskitd + 86796) [0x10097d30c]
      816  ??? (fskitd + 87588) [0x10097d624]
        816  ??? (fskitd + 50740) [0x100974634]
          816  objc_sync_enter + 20 (libobjc.A.dylib + 70452) [0x19b245334]
            816  <patched truncated backtrace>
              816  __ulock_wait2 + 8 (libsystem_kernel.dylib + 60532) [0x19b656c74]
               *816  ??? (kernel.release.t6031 + 6477368) [0xfffffe0008ea1638] (blocked by turnstile waiting for fskitd [634] thread 0x30444d)

Worse yet, the number of threads kept growing, every time I retried the mount command!

I was able to clear this by restarting, after which the mount command worked as expected.

I did some spelunking based on internal resources and it seems that these threads are deadlocked due to some previous error starting the extension. Hence my idea to restart, in an attempt to clear that state.

I’ve filed my own internal bug about this (r. 172914665).

Lemme know how you get along.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I can confirm reboot fixed it. However I immediately hit another problem: after doing a Preview on a mounted drive a few times I'm not able to unmount it cleanly: "The disk xxx couldn't be ejected because the Finder is using it". I closed and re-open the Finder but still see this. I guess forced unmount should work but I'm a bit worried it can lead to other issues.

after doing a Preview on a mounted drive a few times I'm not able to unmount it cleanly

What does lsof report?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I already unmounted it, but lsof would surely report unclosed file descriptors. Shouldn't unmount attempt to close it automatically, especially if it was created by the Finder/Preview and cached somewhere ?

FSKit passthrough sample fails to mount
 
 
Q