[SQLite3 / SQLCipher仅在iOS 13+时崩溃

问题描述 投票:0回答:1

我进行了一项测试,以从SQLite3数据库获取列名和其他元数据信息。当我打电话给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我没有崩溃问题(尽管该方法返回NULL,这是预期的结果,根据sqlite3文档,我确实处理了空结果)。

我的SQL语句为SELECT * FROM 'empInfo'。其中有一个包含有效项目的工作表。

有人对SQLite3,SQLCipher和ios13有任何问题吗?在SO或Google中未找到任何内容...

[如果有更多信息帮助,请询问,我可以添加。

编辑:我能够重现此项目中的错误https://github.com/CarlinhaCamargo/SQLite3_crash_problem

ios objective-c sqlite ios13 sqlcipher
1个回答
0
投票

问题是您项目中libsqlcipher.dylib的版本。当我删除它并通过Cocoapods添加了最新版本时,它解决了该问题。参见PR #2

© www.soinside.com 2019 - 2024. All rights reserved.