Mysterious Segfault



我在尝试调用varargs函数时遇到了一个无法解决的分段错误。在调试器(Neiver/GDB和EDB)中,错误指令是堆栈上的movaps xmmword ptr [rbp-288], xmm7rbp == 0x00007ffd0e16ba78。如果重要的话,xmm7就是0

指令位于.text:00401d10,位于buffer_appendf函数中。

在线反汇编

二进制下载

movaps需要操作数的16字节对齐,大多数调用约定都能确保这一点。根本原因是你实际上在早些时候把对齐搞砸了,从外观上看是parallisp_main:

0x0000000000400a95 <+159>:  pop    %rbx
0x0000000000400a96 <+160>:  callq  *%rax
0x0000000000400a98 <+162>:  callq  0x4007e0 <free@plt>
0x0000000000400a9d <+167>:  retq   

pop %rbx移动到刚好在retq之前应该可以修复对齐。

相关内容

  • 没有找到相关文章

最新更新