AIX:未知分段故障问题
AIX: Unknown Segmentation fault issue
在AIX上运行代码时,出现未知且突然的分段错误。以下行:
sourceSample +=value;
给出分段错误。这里的sourceSample是指向图像的指针。
我对上面的代码行做了一些更改,出现了以下情况:
int *p = sourceSample; sourceSample = p + value;
分段故障持续存在。int **p = &sourceSample; sourceSample = *p + value;
没有分段错误,代码执行成功。
有人能告诉我为什么会发生这种事吗?
ps:这是我对StackOverflow的第一个问题,如果我遗漏了什么,请原谅我。
我发现了问题的症结所在。这个问题是因为在AIX中生成了错误的汇编代码。当它在使用向sourceSample添加"值"后尝试访问sourceSample时,会发生分段故障
if(bitPos == bitPos_renew) {
sourceSample += value;
}
当将"value"添加到sourceSample指针并尝试访问sourceSample时,AIX会引发分段错误。这是因为变量"value"中的值错误。
"value"的值使用分配
value = sx <= ex ? 1 : -1;
分配给它的值应该是1或-1,但当我们在汇编代码中看到分配给引用变量"value"的64位寄存器的值是
00000000FFFFFFFF
而非
FFFFFFFFFFFFF(-1)
因此,当"value"添加到sourceSample时,它开始指向一些未分配的内存,从而导致分段错误。
当我尝试打印变量"value"的值时,程序集代码会自动更正并成功运行。
这是因为编译器进行了优化。如果我通过将优化级别设置为O0来删除所有优化,则汇编代码完全可以,并且不存在分段错误。
相关文章:
- 警告处理为错误这里有什么问题
- 分段故障(堆芯转储)矢量
- 最小硬币更换问题(自上而下方法)
- 分段故障背包问题
- 分割故障 - 遇到问题,创建新的数组实例
- C :分割故障(核心倾倒)问题
- 为什么最后一个拆分函数会导致分割故障?如何解决此问题
- AIX:未知分段故障问题
- Python C-API:PYDICT_GETITEM上的分割故障,可能的参考问题
- 使用指针和结构C 计算两个点之间的距离,分割故障问题
- SSE _mm_store_ps分段故障问题
- 细分故障问题
- R内部分段故障和链接问题
- 分段故障和指针问题
- 创建二进制搜索树时出现分段故障问题
- 递归呼叫分段故障问题
- 使用arm-linux- gnuabi -g++ -o时出现段故障,不使用-o也不会出现问题
- "Ambiguous Overload"回路中的问题和故障 CIN
- 单链表段故障问题
- 在c++和Linux中查找总线错误/Seg故障的问题