3

macOS 11 で、 Apple のサンプル「DriverKit Extension とクライアント アプリ間の通信」のビルドと実行に成功しました。つまり、DEXT をインストールし、クライアント経由で制御することもできます。ただし、macOS 10.15.7 では、ビルドして DEXT をインストールできますが、DEXT がクラッシュします。

systemextensionsclt の出力:

systemextensionsctl list
1 extension(s)
--- com.apple.system_extension.driver_extension enabled active  teamID  bundleID (version)  name    [state]
*   *   -   com.example.apple-samplecode.dext-to-user-client.driver (1.0/1) com.example.apple-samplecode.dext-to-user-client.driver [activated enabled]

しかし、OS が DEXT を実行しようとすると、明らかに DEXT 自体がクラッシュします。

Dyld Error Message:
  Symbol not found: __ZN8OSAction18CreateWithTypeNameEP8OSObjectyymP8OSStringPPS_
  Referenced from: /Library/SystemExtensions/*/com.example.apple-samplecode.dext-to-user-client.driver (which was built for Mac OS X 19.0)
  Expected in: /System/DriverKit/System/Library/Frameworks/DriverKit.framework/DriverKit

Thread 2 Crashed:: Dispatch queue: NullDriverUserClient-Default
0   dyld                            0x000000011bb05ede __abort_with_payload + 10
1   dyld                            0x000000011bb2f55d abort_with_payload_wrapper_internal + 80
2   dyld                            0x000000011bb2f58f abort_with_payload + 9
3   dyld                            0x000000011bb2cbf4 dyld::halt(char const*) + 463
4   dyld                            0x000000011bab4bc3 dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + 140
5   libdyld.dylib                   0x000000010dcf5936 dyld_stub_binder + 282
6   ???                             0x000000010da6f1a0 0 + 4524011936
7   com.example.apple-samplecode.dext-to-user-client.driver 0x000000010da64c41 NullDriverUserClient::Start_Impl(IOService*) + 705 (NullDriverUserClient.cpp:223)
8   com.apple.DriverKit             0x000000010dae09e4 IOService::Start_Invoke(IORPC, OSMetaClassBase*, int (*)(OSMetaClassBase*, IOService*)) + 86
9   com.example.apple-samplecode.dext-to-user-client.driver 0x000000010da67f75 NullDriverUserClient::_Dispatch(NullDriverUserClient*, IORPC) + 293 (NullDriverUserClient.iig.cpp:180)
10  com.example.apple-samplecode.dext-to-user-client.driver 0x000000010da67e3d NullDriverUserClient::Dispatch(IORPC) + 77 (NullDriverUserClient.iig.cpp:167)
11  com.apple.DriverKit             0x000000010dacd241 invocation function for block in OSMetaClassBase::Invoke(IORPC) + 117

注: この同じビルドのバイナリは、macOS 11 で正常に動作します。

Xcode 12.4 (12D4e) を使用して、macOS 11.4 (20F71) および 10.15.7 (19H1217) を使用しています。DEXT は、理想的には macOS 10.15 でも実行する必要があります。

これは macOS 10.15.7 の DriverKit.framework のバグですか、それともプロジェクトを間違った方法でセットアップしたのでしょうか?

4

1 に答える 1