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

【嵌入式】内存未对齐导致程序崩溃(铺获信号量SIGBUS,数值7)

背景

嵌入式平台上,和A组配合,需要把A组提供的二进制文件在调用A组提供接口时传入,因为有多个bin文件,自测的时候选择了其中一个,运行正常。递交给qa测试了。然后qa反馈必现崩溃。懵了。复现的时候还用的之前的bin文件,无法复现。最后看信号量数值和打印日志判断是在调用接口的地方,然后对了下长度,发现奇数。而自己用的偶数大小的bin文件。然后修改4字节对齐后正常了。

问题现象

日志打印提示:
在这里插入图片描述
并查了下日志中的铺获信号量打印是7

SIGBUS:SIG是信号名的通用前缀,BUS是bus error (总线错误) ,意味着系统检测到硬件问题后发送给进程的信号。对应的数值为7。通常该信号的产生不是因为硬件有物理上的损坏,而是代码实现有 bug 导致,如地址不对齐,或者不存在的物理地址等。si_addr 为所访问的非法地址。该信号量中常见的错误码(errno对应的errmsg)说明:
在这里插入图片描述

解决方法

嵌入式平台内存地址上一般4字节对齐,特别是一些加速器对bit位的要求。后面修改成4字节对齐后,程序正常。

#define ALIGN_BIT(x,a) (((x) + (a)-1U) & ~((a)-1U))
#define ALIGN_16BIT(x) ALIGN_BIT(x,16U)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ubuntu上qt使用SSH样式表
  • zm-tree-org 数据量过大时,全部展开后,根节点点击收缩,树形消失
  • 第一章 Spring Boot入门
  • 机器学习引领未来:赋能精准高效的图像识别技术革新
  • AWS SES服务 Golang接入教程(排坑版)
  • 【编译SOCI数据操作库教程】
  • 你做的SEO为什么效果不够好?
  • Opencv中的直方图(4)局部直方图均衡技术函数createCLAHE()的使用
  • QT cmake vscode 构建流程
  • 打造高效接口自动化测试:精准对比与可视化展示,轻松发现数据差异!
  • 【Leetcode 2399 】 检查相同字母间的距离 —— 哈希表
  • 2024国赛数学建模备赛|30种常用的算法模型之最优算法,线性规划
  • 服务器文件权限限制写入
  • 【Google SEO】SEO 面试问题和答案
  • uniapp去除顶部标题栏
  • 11111111
  • 2017届校招提前批面试回顾
  • Apache Pulsar 2.1 重磅发布
  • Electron入门介绍
  • JS实现简单的MVC模式开发小游戏
  • Linux链接文件
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Python 反序列化安全问题(二)
  • Redis的resp协议
  • Sass Day-01
  • 关于List、List?、ListObject的区别
  • 排序(1):冒泡排序
  • 让你的分享飞起来——极光推出社会化分享组件
  • 深度解析利用ES6进行Promise封装总结
  • 探索 JS 中的模块化
  • 微信小程序填坑清单
  • 我的面试准备过程--容器(更新中)
  • 云大使推广中的常见热门问题
  • 回归生活:清理微信公众号
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​如何防止网络攻击?
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #100天计划# 2013年9月29日
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (二) 初入MySQL 【数据库管理】
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)scrum常见工具列表
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .gitignore文件使用
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 基于MiniExcel的导入功能接口示例