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;
}

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

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

相关推荐
hulihutu4413 小时前
拒绝延期、bug、货不对板:2026 管理系统定制开发落地保障手册
github·bug·鸿蒙系统·数据库管理员
Rain50913 小时前
谁动了我的 URL?——记一次微前端“灵异 Bug“的排查实录
前端·vue.js·人工智能·前端框架·bug·ai编程
百变梦仔13 小时前
Codex 处理接口异常类 bug 时,我会让调试 Skill 先接住错误信息
bug
深念Y3 天前
fnOS-k3s-ResolvConf权限700-Bug分析
内核·bug·nas·k3s·fnos·魔改内核
不正经学生3 天前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
Capricorn19883 天前
Bug排障实录:Software 3.0 遭遇文献幻觉?知芽 Notebook Skill 底层架构解析
人工智能·笔记·架构·bug·论文笔记
项目管理与代码4 天前
Bug跟踪管理系统对比:从提报效率、流转体验与数据分析能力三个维度评估
bug·项目管理·bug跟踪
福大大架构师每日一题6 天前
RAGFlow v0.27.1 发布:新增 Azure DevOps、You.com 搜索,修复海量 Bug,性能大幅提升!
bug·azure·devops
树码小子6 天前
测试(6) - bug篇(上)
软件测试·bug
周杰伦的稻香6 天前
[bug]npx @deepseek-ai/dsh plugin ...无限吃内存卡死
bug