SQLite3/SQLCipher 仅在 iOS 13+ 时崩溃
SQLite3/SQLCipher crash only with iOS 13+
我有一个从 SQLite3 db 获取列名和其他元数据信息的测试。当我调用 sqlite3_column_database_name(pStmt, 0);
时,我的应用程序崩溃了。这只有在与 SQLCipher 结合使用时才会发生。崩溃日志不是很有帮助(几乎总是与 libs 和 ios 一样)。
Incident Identifier: 445465AF-AE38-40BE-9FEF-875DD439197C
CrashReporter Key: 5108d3729725a56f2cc6f3faeb9a08313e134acf
Hardware Model: iPhone11,8
Process: MyTestApp [3910]
Path: /private/var/containers/Bundle/Application/457CA529-5F45-4B79-A1A7-71AF527F805D/MyTestApp.app/MyTestApp
Identifier: (myidentifer)
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: (myidentifier) [1234]
Date/Time: 2020-05-27 15:28:15.7582 -0300
Launch Time: 2020-05-27 15:28:09.4374 -0300
OS Version: iPhone OS 13.4.1 (17E262)
Release Type: User
Baseband Version: 2.05.13
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000020a800000008 -> 0x0000002800000008 (possible pointer authentication failure)
VM Region Info: 0x2800000008 is not in any region. Bytes after previous region: 160524402697
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
MALLOC_NANO 0000000283b80000-00000002a0000000 [452.5M] rw-/rwx SM=ZER
--->
UNUSED SPACE AT END
我的设备 (iPhone XR 13.4.1) 和模拟器 (iOS 13.4) 有问题。
我没有旧设备,但是使用模拟器 11.4 和 12.9 我没有崩溃问题(尽管方法 returns NULL,这是预期的结果,根据 sqlite3 文档,我确实处理了空结果适当)。
我的SQL声明是SELECT * FROM 'empInfo'
。它有一个有效的 table 和有效的项目。
有人对 SQLite3、SQLCipher 和 ios13 有任何问题吗?在 SO 或 google...
中未找到任何内容
如果有更多信息有帮助,请询问,我可以添加。
编辑:
我能够重现此项目中的错误 https://github.com/CarlinhaCamargo/SQLite3_crash_problem
问题是您项目中 libsqlcipher.dylib
的版本。当我删除它并通过 Cocoapods 添加最新版本时,它解决了问题。请参阅公关 #2。
我有一个从 SQLite3 db 获取列名和其他元数据信息的测试。当我调用 sqlite3_column_database_name(pStmt, 0);
时,我的应用程序崩溃了。这只有在与 SQLCipher 结合使用时才会发生。崩溃日志不是很有帮助(几乎总是与 libs 和 ios 一样)。
Incident Identifier: 445465AF-AE38-40BE-9FEF-875DD439197C
CrashReporter Key: 5108d3729725a56f2cc6f3faeb9a08313e134acf
Hardware Model: iPhone11,8
Process: MyTestApp [3910]
Path: /private/var/containers/Bundle/Application/457CA529-5F45-4B79-A1A7-71AF527F805D/MyTestApp.app/MyTestApp
Identifier: (myidentifer)
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: (myidentifier) [1234]
Date/Time: 2020-05-27 15:28:15.7582 -0300
Launch Time: 2020-05-27 15:28:09.4374 -0300
OS Version: iPhone OS 13.4.1 (17E262)
Release Type: User
Baseband Version: 2.05.13
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000020a800000008 -> 0x0000002800000008 (possible pointer authentication failure)
VM Region Info: 0x2800000008 is not in any region. Bytes after previous region: 160524402697
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
MALLOC_NANO 0000000283b80000-00000002a0000000 [452.5M] rw-/rwx SM=ZER
--->
UNUSED SPACE AT END
我的设备 (iPhone XR 13.4.1) 和模拟器 (iOS 13.4) 有问题。 我没有旧设备,但是使用模拟器 11.4 和 12.9 我没有崩溃问题(尽管方法 returns NULL,这是预期的结果,根据 sqlite3 文档,我确实处理了空结果适当)。
我的SQL声明是SELECT * FROM 'empInfo'
。它有一个有效的 table 和有效的项目。
有人对 SQLite3、SQLCipher 和 ios13 有任何问题吗?在 SO 或 google...
中未找到任何内容如果有更多信息有帮助,请询问,我可以添加。
编辑: 我能够重现此项目中的错误 https://github.com/CarlinhaCamargo/SQLite3_crash_problem
问题是您项目中 libsqlcipher.dylib
的版本。当我删除它并通过 Cocoapods 添加最新版本时,它解决了问题。请参阅公关 #2。