DEXT 在 macOS 10.15.7 上崩溃
DEXT crashes on macOS 10.15.7
我在 macOS 11 上成功构建了 运行 Apple 示例 Communicateing Between a DriverKit Extension and a Client App,这意味着我可以安装 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 本身显然崩溃了:
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
注意:同一构建的二进制文件在 macOS11.
上工作正常
我在 macOS 11.4 (20F71) 和 10.15.7 (19H1217) 使用 Xcode 12.4 (12D4e)。
DEXT 理想情况下也应该 运行 on macOS 10.15.
这是 macDriverKit.framework 10.15.7 上的 DriverKit.framework 中的错误还是我设置项目的方式不正确?
缺少的符号 __ZN8OSAction18CreateWithTypeNameEP8OSObjectyymP8OSStringPPS_
指的是 OSAction::CreateWithTypeName(OSObject*, unsigned long long, unsigned long long, unsigned long, OSString*, OSAction**)
。 This function is only available from Big Sur/macOS 11.0/DriverKit 20.0 onwards.
您可能应该为回调类型的 OSAction
使用自动生成的 Create
函数,否则使用旧的 OSAction::Create
函数。
我在 macOS 11 上成功构建了 运行 Apple 示例 Communicateing Between a DriverKit Extension and a Client App,这意味着我可以安装 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 本身显然崩溃了:
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
注意:同一构建的二进制文件在 macOS11.
上工作正常我在 macOS 11.4 (20F71) 和 10.15.7 (19H1217) 使用 Xcode 12.4 (12D4e)。 DEXT 理想情况下也应该 运行 on macOS 10.15.
这是 macDriverKit.framework 10.15.7 上的 DriverKit.framework 中的错误还是我设置项目的方式不正确?
缺少的符号 __ZN8OSAction18CreateWithTypeNameEP8OSObjectyymP8OSStringPPS_
指的是 OSAction::CreateWithTypeName(OSObject*, unsigned long long, unsigned long long, unsigned long, OSString*, OSAction**)
。 This function is only available from Big Sur/macOS 11.0/DriverKit 20.0 onwards.
您可能应该为回调类型的 OSAction
使用自动生成的 Create
函数,否则使用旧的 OSAction::Create
函数。