8字节内存对齐引发的bug

记录一个偶发的死机情况

1. 问题背景

最近的项目中,改动代码时新增了一个结构体,该结构体包含 double 成员,并通过 double 指针进行了取值操作。

2. 代码复现

大致代码如下:

c 复制代码
/* packed(1)结构体:double成员仅按1字节对齐,value偏移为1,必然不是8字节对齐 */
#pragma pack(1)             // 设置对齐值为 1 字节
typedef struct {
    uint8_t  prefix;   /* 偏移0 */
    double   value;    /* 偏移1,未8字节对齐 */
} unaligned_double_struct_t;
#pragma pack()              // 恢复默认对齐


void Trigger_Unaligned_Double_Fault(double *p)
{
    volatile double val;
    

    
    /* 对double指针进行取值操作,若地址未8字节对齐则触发异常 */
    val = *p;
    
    /* 防止编译器优化 */
    (void)val;
}

执行后触发了异常,关键在于该操作并非每次都会执行,因此并非每次必现。

手动模拟异常操作的结果:

相关推荐
烧烧的酒0.o2 天前
Codex桌面版更新后不能使用最新模型问题-排查修复总结
chatgpt·bug
sg_knight3 天前
ZCode Bug 定位实战:把报错丢给 ZCode,它是怎么修的
llm·bug·agent·ai编程·glm·智谱·zcode
轩轶子4 天前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
鬼手点金4 天前
Claude Code示范案例-修复 Bug 工作流
java·服务器·前端·javascript·bug·openclaw
^Rocky13 天前
IT 疑难杂症诊疗室:复杂技术问题解决实录
运维·bug
Keven_1115 天前
Bug:UVA816
bug
Keven_1115 天前
Bug:UVA1103
bug
钱栈up16 天前
坯料管理导入功能bug修复:只改前端一个文件就解决问题
前端·bug
项目管理实用笔记16 天前
Bug跟踪管理系统有哪些?2026 推荐清单与选型指南
bug·研发管理·研发管理工具·项目管理软件选型
iNeuOS工业互联网19 天前
iNeuOS工业互联网操作系统,重要更新:性能优化、安全漏洞与BUG修复,远程控制响应效率大幅提升
性能优化·bug