当前位置: 首页 > news >正文

Xcode16 编译运行YYCache iOS18 sqlite3_finalize 闪退问题解决方案

问题原因

升级Xcode 16 之后,真机运行APP,发现会有Crash,崩溃堆栈线上Crash 在 YYCache 之中。如下图所示
在这里插入图片描述
在这里插入图片描述
崩溃堆栈如下:

* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRTframe #0: 0x00000001d93911d4 libsystem_kernel.dylib`__pthread_kill + 8frame #1: 0x00000002114d6ef8 libsystem_pthread.dylib`pthread_kill + 268frame #2: 0x0000000190d83ad8 libsystem_c.dylib`abort + 128frame #3: 0x0000000190d82e08 libsystem_c.dylib`__assert_rtn + 284frame #4: 0x000000010500f7d8 libRPAC.dylib`isBulkReadStatement.cold.3 + 100frame #5: 0x0000000104f80c88 libRPAC.dylib`isBulkReadStatement + 360frame #6: 0x0000000105005254 libRPAC.dylib`interposed_sqlite3_finalize + 152* frame #7: 0x0000000111d7adc0 CsdnPlus.debug.dylib`-[YYKVStorage _dbClose](self=0x000000013448ccc0, _cmd="_dbClose") at YYKVStorage.m:138:21frame #8: 0x0000000111d7ee84 CsdnPlus.debug.dylib`-[YYKVStorage dealloc](self=0x000000013448ccc0, _cmd="dealloc") at YYKVStorage.m:731:5frame #9: 0x0000000111d77d8c CsdnPlus.debug.dylib`-[YYDiskCache _appWillBeTerminated](self=0x0000000134f91200, _cmd="_appWillBeTerminated") at YYDiskCache.m:155:9frame #10: 0x0000000188fc32f4 CoreFoundation`__CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 148frame #11: 0x0000000188fc3210 CoreFoundation`___CFXRegistrationPost_block_invoke + 88frame #12: 0x0000000188fc3158 CoreFoundation`_CFXRegistrationPost + 436frame #13: 0x0000000188fc170c CoreFoundation`_CFXNotificationPost + 728frame #14: 0x0000000187be4ea4 Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 92frame #15: 0x000000018c897df0 UIKitCore`-[UIApplication _terminateWithStatus:] + 232frame #16: 0x000000018b8d6f88 UIKitCore`-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 112frame #17: 0x000000018c0b78f4 UIKitCore`-[_UISceneLifecycleMultiplexer forceExitWithTransitionContext:scene:] + 164frame #18: 0x000000018c89354c UIKitCore`-[UIApplication workspaceShouldExit:withTransitionContext:] + 164frame #19: 0x00000001a25d1f68 FrontBoardServices`__63-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:]_block_invoke_2 + 72frame #20: 0x00000001a2591c44 FrontBoardServices`-[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 168frame #21: 0x00000001a25d1f08 FrontBoardServices`__63-[FBSWorkspaceScenesClient willTerminateWithTransitionContext:]_block_invoke + 128frame #22: 0x000000010563a71c libdispatch.dylib`_dispatch_client_callout + 20frame #23: 0x000000010563e13c libdispatch.dylib`_dispatch_block_invoke_direct + 296frame #24: 0x00000001a2593300 FrontBoardServices`__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 52frame #25: 0x00000001a2593280 FrontBoardServices`-[FBSMainRunLoopSerialQueue _targetQueue_performNextIfPossible] + 240frame #26: 0x00000001a2593158 FrontBoardServices`-[FBSMainRunLoopSerialQueue _performNextFromRunLoopSource] + 28frame #27: 0x0000000188fc8328 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28frame #28: 0x0000000188fc82bc CoreFoundation`__CFRunLoopDoSource0 + 176frame #29: 0x0000000188fc5dc0 CoreFoundation`__CFRunLoopDoSources0 + 244frame #30: 0x0000000188fc4fbc CoreFoundation`__CFRunLoopRun + 840frame #31: 0x0000000188fc4830 CoreFoundation`CFRunLoopRunSpecific + 588frame #32: 0x00000001d4fa41c4 GraphicsServices`GSEventRunModal + 164frame #33: 0x000000018bb2aeb0 UIKitCore`-[UIApplication _run] + 816frame #34: 0x000000018bbd95b4 UIKitCore`UIApplicationMain + 340frame #35: 0x000000010fae959c CsdnPlus.debug.dylib`main(argc=3, argv=0x000000016b2e7438) at main.m:14:16frame #36: 0x00000001ae9b2ec8 dyld`start + 2724

解决方案一

@implementation YYKVStorage- (BOOL)_dbClose {...// 原代码if (_dbStmtCache) CFRelease(_dbStmtCache);// 替换为if (_dbStmtCache) {              CFIndex size = CFDictionaryGetCount(_dbStmtCache);CFTypeRef *valuesRef = (CFTypeRef *)malloc(size * sizeof(CFTypeRef));CFDictionaryGetKeysAndValues(_dbStmtCache, NULL, (const void **)valuesRef);const sqlite3_stmt **stmts = (const sqlite3_stmt **)valuesRef;for (CFIndex i = 0; i < size; i ++) {sqlite3_stmt *stmt = stmts[i];sqlite3_finalize(stmt);}free(valuesRef);CFRelease(_dbStmtCache);}...
}

解决方案二

static void _finalizeStatement(const void *key, const void *value, void *context) {sqlite3_finalize((sqlite3_stmt *)value);
}- (BOOL)_dbClose {···// 原代码if (_dbStmtCache) CFRelease(_dbStmtCache);// 替换为if (_dbStmtCache) {              CFDictionaryApplyFunction(_dbStmtCache, _finalizeStatement, NULL);CFRelease(_dbStmtCache);}···
}

相关文章:

Xcode16 编译运行YYCache iOS18 sqlite3_finalize 闪退问题解决方案

问题原因 升级Xcode 16 之后&#xff0c;真机运行APP&#xff0c;发现会有Crash&#xff0c;崩溃堆栈线上Crash 在 YYCache 之中。如下图所示 崩溃堆栈如下&#xff1a; * thread #1, queue com.apple.main-thread, stop reason signal SIGABRTframe #0: 0x00000001d9391…...

Kafka-Windows搭建全流程(环境,安装包,编译,消费案例,远程连接,服务自启,可视化工具)

目录 一. Kafka安装包获取 1. 官网地址 2. 百度网盘链接 二. 环境要求 1. Java 运行环境 (1) 对 java 环境变量进行配置 (2) 下载完毕之后进行解压 三. 启动Zookeeper 四. 启动Kafka (1) 修改Conf下的server.properties文件&#xff0c;修改kafka的日志文件路径 (2)…...

django模板相关配置

模板引擎配置 Django支持多种模板引擎&#xff0c;最常用的是Django自带的模板引擎和Jinja2模板引擎。模板引擎的配置主要在settings.py文件中的TEMPLATES列表中进行。 BACKEND&#xff1a;指定模板引擎。例如&#xff0c;BACKEND: django.template.backends.django.DjangoTe…...

MongoDB等保限制下的连接认证问题

目录 一、问题描述 二、解决方案 三、代码示例 四、拓展知识 一、问题描述 用户调整用户连接认证机制以满足等保要求,调整后程序连接mongodb失败。数据库日志报错如下: {"t":{"$date":"2024-10-10T14:39:07.825+08:00"},"s":&q…...

2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP

文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整&#xff0c;仅供参考&#xff01; 除WEB&#xff0c;RE&#xff0c;PWN外&#xff0c;其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…...

idea 无法输入中文 快速解决

idea在某些情况会出现无法输入中文的情况&#xff0c;我们不去深究内部原因&#xff0c;直接上解决方案&#xff1a; 1、点击菜单help->Edit Custom VM Options 2、最后一行&#xff0c;追加&#xff1a; -Drecreate.x11.input.methodtrue 、 3、重启...

掌握ElasticSearch(五):查询和过滤器

一、查询和过滤器的区别 在 Elasticsearch 中&#xff0c;查询&#xff08;Query&#xff09;和过滤器&#xff08;Filter&#xff09;是用于检索和筛选数据的重要组成部分。它们虽然都能用来查找文档&#xff0c;但在性能和用法上有所不同。下面详细介绍查询和过滤器的概念以…...

自学[vue+SpringCloud]-012-SpringCloud工程发送邮件

文章目录 前言一、配置QQ邮箱1.1 设置1.2 获取授权码 二、服务发送邮件2.1 引入依赖包2.2 新建AlarmMessageDto2.3 增加controller代码2.4 main方法测试 总结 前言 skywalking监控通过webhook调用SpringCloud服务接口&#xff0c;接口中发送告警邮件。 一、配置QQ邮箱 1.1 设…...

STM32通信协议-I2C

目录 一&#xff0c;IC2的协议规则 I2C总线是PHILIPS公司开发的两线式串行总线&#xff0c;I2C总线主要解决了单片机一对多通信的问题 两根通信线&#xff1a;SCL,SDA&#xff0c;同步&#xff0c;半双工通信&#xff0c;支持数据应答机制&#xff0c;支持总线挂载多设备。 …...

廉颇老矣尚能饭否,实践甘肃数据挖掘挑战赛作物与杂草的智能识别,基于YOLOv3全系列【tiny/l/spp】参数模型开发构建田间低头作物杂草智能化检测识别模型

一、背景 田间杂草的有效管理是现代农业生产中面临的重要挑战之一。杂草不仅竞争作物的养分、 水分和阳光&#xff0c;还可能成为害虫和病原体的寄主&#xff0c;从而降低农作物的产量和品质。因此&#xff0c;开发 高效、精确的杂草检测和管理系统对于提高农业生产效率、降低化…...

基于Django+Python的宾馆管理系统设计与实现

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…...

MySQL--mysql的安装

1.Linux上mysql的安装: Ubuntu下: (1)安装前首先切换到管理员身份:sudo su (2)然后执行命令:apt install mysql-server (注意:装的是服务器端,客户端自动就安装了) (3)执行过程中按y; 2.Mysql初始化配置 注意,一定是sudo su,必须是管理员才能进行Mysql的初始化设置; 初始化…...

qt 构建、执行qmake、运行、重新构建、清除

qt右键功能有 构建、执行qmake、运行、重新构建、清除&#xff0c;下面简单介绍一下各个模块的作用。 1. 执行qmake qmake是一个工具&#xff0c; 它根据pro文件生成makefile文件&#xff0c;而makefile文件中则定义编译与连接的规则。pro文件中定义了头文件&#xff0c;源文件…...

微软发布 Win11 22H2/23H2 十月可选更新KB5044380!

系统之家于10月23日发出最新报道&#xff0c;微软针对Win11 22H2和23H2用户&#xff0c;发布了10月可选更新KB5044380&#xff0c;用户安装后版本号升至22621.4391和22631.4391。本次更新开始推出屏幕键盘的新游戏板键盘布局&#xff0c;支持用户使用Xbox控制器在屏幕上移动和键…...

TensorFlow面试整理-TensorFlow 基础概念

在学习和准备 TensorFlow 时,了解基础概念是至关重要的。以下是 TensorFlow 的一些核心基础概念: 1. Tensor (张量) ● 定义:张量是 TensorFlow 中的核心数据结构。它是一个多维数组,可以表示标量、向量、矩阵以及更高维的数组。张量在数学上与矩阵非常相似,但可以具有任意…...

Java实现HTTP代理的技巧与方法

在互联网时代&#xff0c;代理IP已经成为了网络访问中不可或缺的一部分。无论是为了保护隐私&#xff0c;还是为了访问特定的网络资源&#xff0c;代理IP都能发挥重要作用。那么&#xff0c;如何在Java中实现HTTP代理呢&#xff1f;本文将带您逐步了解这个过程。 什么是HTTP代…...

MFC图形函数学习02——绘制像素点函数

再次强调一下&#xff0c;我们这里学习的MFC图形函数&#xff0c;是指绘制二维图形的函数。一般来说&#xff0c;一个二维图形组成的基本要素是点、线、面以及相关的颜色。在本文中&#xff0c;将学习绘制像素点函数&#xff0c;与绘制像素点相关的其它基础知识也随着绘图函数学…...

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中&#xff0c;CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据&#xff0c;例如…...

gateway 整合 spring security oauth2

微服务分布式认证授权方案 在分布式授权系统中&#xff0c;授权服务要独立成一个模块做统一授权&#xff0c;无论客户端是浏览器&#xff0c;app或者第三方&#xff0c;都会在授权服务中获取权限&#xff0c;并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…...

Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)

前言&#xff1a;最近重拾Unity&#xff0c;准备做个3D的FPS小游戏&#xff0c;这里以官方FPS案例素材作为切入。 导入素材和素材理解 安装Unity新建项目新建文件夹和Scene如何去理解三维模型素材找到模型素材素材预制体结构骨骼和网格材质&#xff08;Material&#xff09;、…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

简单聊下阿里云DNS劫持事件

阿里云域名被DNS劫持事件 事件总结 根据ICANN规则&#xff0c;域名注册商&#xff08;Verisign&#xff09;认定aliyuncs.com域名下的部分网站被用于非法活动&#xff08;如传播恶意软件&#xff09;&#xff1b;顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...