搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
推荐一款团队协作软件---confluence_confluence是什么软件
2
has been injected into other beans[XXXXXXXXXX] in its raw version as part of a circular reference
3
【华为OD机试真题 C++语言】476、矩阵匹配、数组中第 K 大的数中的最小值 | 机试真题+思路参考+代码解析(C卷)
4
Linux系统登录新建用户时,shell开头为$,不显示用户名和路径的解决办法_linux $前不显示目录
5
Rust+官方APP使用教程
6
ATF源码篇(十):docs文件夹-Components组件(9)Measured Boot Driver (MBD)_atf源代码
7
RabbitMQ集群(非常详细总结)_rabbiqmq集群
8
机器人内部传感器阅读梳理及心得-速度传感器-数字式速度传感器
9
vue roleForm的rules不起作用/部分起作用【限制表单中输入的长度】【普通表单变验证表单】_vue.js中一个输入框有多个rules时仅生效第一个这个问题怎么处理
10
基于Django实现学生信息管理系统_基于django的学生信息管理系统
当前位置:
article
> 正文
core问题实例:未初始化的指针踩内存导致core堆栈显示错乱
作者:笔触狂放9 | 2024-02-27 11:32:37
赞
踩
core问题
某业务进程,多年启动正常,但最近一个新服务器上部署时启动必core。
如下例代码所示,进程启动时core, core堆栈如下,看堆栈是字符串相关操作触发的core:
再看CDeviceStateProcessor::Init()的代码,core的代码行又没有字符串相关的操作
于是又gdb调试逐行跟踪调试ReadSnapShotForDevType 这个函数,发现程序都能正常执行完,但执行完函数的最后一行return true后进程就core了。
百思不得其解,后走读如下函数代码,发现是使用了未初始化的指针导致,如下标红行。由于指针未初始化,其值是未决的,往其指向的内存写入数据就可能会触发内存访问异常,此时core堆栈的信息也有可能是受到破坏的或不符合代码逻辑的(如本例截图所示在字符串析构时core,但事实上代码没有对字符串的异常操作)
bool CacheBlock::ReadSnapShotForDevType(const char * snap_file_path, uint8_t* pDeviceSpeedType)
{
if (pDeviceSpeedType == NULL)
{
MYLOG_ERROR(g_logger,"pDeviceSpeedType is NULL");
return false;
}
m_devTypeBuffer = pDeviceSpeedType;
MYLOG_INFO(g_logger, "Loading snapshot file: %s.", snap_file_path);
uint64_t * buffer = new uint64_t[_capacity]; // 分配读快照缓冲区
if (NULL == buffer)
{
MYLOG_ERROR(g_logger, "new buffer fail! size=%d", _capacity);
return false;
}
boost::scoped_array<uint64_t> sbuf(buffer); // 智能指针负责删除buffer
// 读快照只发生在初始化阶段,可以不必加锁操作缓存数据
struct stat file_stat;
if (stat(snap_file_path, &file_stat))
{
MYLOG_INFO(g_logger, "Warning check snapshot file's stat: %s, %s", snap_file_path,
strerror(errno));
return false;
}
// Check file size
if ((file_stat.st_size - sizeof(HEAD_INFO)) % sizeof(uint64_t))
{
MYLOG_ERROR(g_logger, "Error corrupted snapshot file: %s", snap_file_path);
return false;
}
FILE *fp = fopen(snap_file_path, "r");
if (fp == NULL)
{
MYLOG_ERROR(g_logger, "Error open snapshot file: %s, %s", snap_file_path, strerror(errno));
return false;
}
int unread_record_count = (file_stat.st_size - sizeof(HEAD_INFO)) / sizeof(uint64_t); // 等待读取的剩余记录条数
time_t dwNow = time(0);
//首先获取快照文件中的快照头部数据,获取其中的最后一次写入快照文件的时间,若时间距离当前时间超过1天,则认为快照文件无效,返回错误
HEAD_INFO* pHeadInfo;
if (fread(pHeadInfo, sizeof(HEAD_INFO), 1, fp) != (size_t)1)
{
MYLOG_ERROR(g_logger,"failed to read the head info of the devType snap file");
if (fclose(fp))
{
MYLOG_ERROR(g_logger,"Error close snapshot file: %s, %s", snap_file_path, strerror(errno));
}
return false;
}
MYLOG_DEBUG(g_logger,"last time save the dev type snap file is: %llu", pHeadInfo->modiTime);
if (pHeadInfo->modiTime > time(0) || time(0) - pHeadInfo->modiTime > 60*60*24)
{
MYLOG_ERROR(g_logger,"SnapShot file is invalid, last time write:%llu, now:%llu", pHeadInfo->modiTime, time(0));
return false;
}
int validDevTypeCount = 0;
while (unread_record_count > 0)
{
int read_count = MIN(unread_record_count, _capacity); // 本次需读取的记录条数
if (fread(buffer, sizeof(uint64_t), read_count, fp) != (size_t)read_count)
{
MYLOG_ERROR(g_logger, "Error load snapshot file: %s, %s", snap_file_path, strerror(errno));
if (fclose(fp))
{
MYLOG_ERROR(g_logger, "Error close snapshot file: %s, %s", snap_file_path, strerror(errno));
}
return false;
}
for (int i = 0; i < read_count; ++i)
{
// 只把合法的快照数据读入缓存块的相应位置,不给缓存块内留空洞
if (buffer[i] < _capacity)
{
pDeviceSpeedType[buffer[i]] = SLOWSPEED_DEVICE;
validDevTypeCount++;
}
}
unread_record_count -= _cache_block_size;
}
if (fclose(fp))
{
MYLOG_ERROR(g_logger, "Error close snapshot file: %s, %s", snap_file_path, strerror(errno));
return false;
}
MYLOG_INFO(g_logger, "Retrieving devType data from snapshot file successfully. records_count=%d.", validDevTypeCount);
return true;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/152569
推荐阅读
article
net
core
Webapi
基础工程搭建(六)——
数据库
操作_
Part
1...
前言后端开发最常打交道的就是
数据库
了(静态网站靠边),上一篇
net
core
Webapi
基础工程搭建(五)——缓存机制...
赞
踩
article
在.
net
core
中利用
sqlsugar
中调用
mysql
和
sqlserver
存储过程_.
net
c...
appsettings.json中配置
mysql
连接串添加类SqlsugarSetup。_.
net
core
怎么调用存...
赞
踩
article
sqlsugar
对
mysql
效率高_基于.Net
Core
2.0 +
SqlSugar
ORM
+...
.Net
Core
2.0 (以下简称
Core
)正式版已经发布有一段时间了, 博主也第一时间尝鲜了, 相比
Core
1....
赞
踩
article
【
SqlSugar
】
SqlSugar
连接操作MySQL
数据库
+ASP.NET
Core
Web ...
SqlSugar
连接操作
数据库
+ASP.NET
Core
Web API 6.0 教程链接Nuget 安装连接mysq...
赞
踩
article
ASP.
NET
Core
Entity
Framework
(EF)
数据库
访问 SqlSugar_e...
ASP.
NET
Core
依赖注入ASP.
NET
Core
Entity
Framework
Core
ASP.
NET
C...
赞
踩
article
.
net
core
3.1
mysql
_.
net
core
3.1
MVC使用sqlsugar方式操作...
一、创建项目本来这个项目是写SQLite
数据库
的,但连接字符串,老不成功,郁闷死了,改成使用这个MySQL5.7
数据库
了...
赞
踩
article
mysql
sqlsugar
_.
net
core
+
mysql
Sugar(最为简单
的
增删改查)...
首先建立.
net
Core API - empty 这个就不说了然后创建新
的
Controller记得添加路由[Route...
赞
踩
article
C#
架构设计
,基于
SqlSugar
的
CodeFirst
一套
数据库
访问交互框架设计,一行代码配置假删除...
SqlSugar
是一个基于.NET的ORM(对象关系映射)库,它提供了简单而强大的方式来操作
数据库
。
SqlSugar
支持...
赞
踩
article
.
net
core
+
codefirst
(.
net
core
基础入门,适合
这方面
的
小白阅读) 【...
.
net
core
+
codefirst
(.
net
core
基础入门,适合
这方面
的
小白阅读)前言 .
net
core
...
赞
踩
article
【ASP .
NET
CORE
】
SqlSugar
DbFirst
生成
实体
框架...
一、基本信息项目 版本 描述 .Net Core 3.1 框架
SqlSugar
Core 5.0...
赞
踩
article
.NET
SqlSuger
初次
使用
_.
net
core
控制台
程序
使用
sqlsugar
...
我之前在B站上面发视频说如何
使用
EF框架去生成实体类。我当时做了Mysql,Sql server,Sqlite的适配。但...
赞
踩
article
.
Net
EF
Core
IEntityTypeConfiguration
之
CodeFirst
实现(...
针对.net core EF框架下的
CodeFirst
实现(Webapi项目)1、配置文件appsettings.jso...
赞
踩
article
Windows
上提示
api
-ms-
win
-
core
-
path
-l1-1-0.
dll
丢失怎么办?_...
Windows
上提示
api
-ms-
win
-
core
-
path
-l1-1-0.
dll
丢失怎么办?最近有用户在开启电脑的...
赞
踩
article
解决
Windows
缺少
api
-ms-
win
-
core
-
handle
-l1-1-0.
dll
文件的问题...
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其...
赞
踩
article
计算机中丢失
api
-ms-
win
-
core
-
path
-l
1
-
1
-0.
dll
的三种解决方法...
检测好了之后软件会提示需要安装什么,提示:必要系统组件几个等等,然后点击进去安装就是了。键入“cmd”, Windows...
赞
踩
article
api
-
ms
-
win
-
core
-
file
-
l1
-1-0.
dll
文件找不到的完美解决方法_
api
-
ms
...
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其...
赞
踩
article
解决
Windows
缺少
api
-
ms
-
win
-
core
-
interlocked
-l1-1-0.
dll
文...
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其...
赞
踩
article
电脑报错“
api
-
ms
-
win
-
core
-
path
-
l
1
-
1
-0.
dll
文件
丢失,软件无法启动”,快...
很多用户在日常使用电脑的时候,或多或少都遇到过,在启动游戏或软件的时候,Windows桌面会弹出错误提示框“
api
-
ms
...
赞
踩
article
解决
api
-ms-
win
-
core
-
processtopology
-
obsolete
-l1-1-0....
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其...
赞
踩
article
解决
Windows
缺少api-ms-
win
-
core
-
com
-l1-1-0.
dll
文件问题...
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其...
赞
踩
相关标签
net core
数据库
SqlSugar
mysql
sqlserver
.netcore
sqlsugar对mysql效率高
database
asp.net
.net core 3.1 mysql
mysql sqlsugar
c#
交互
测试
json
.net
windows
microsoft
服务器
c++
ue4
游戏
开发语言
vr