[Bug 1850258] Re: First breakpoint at AVX instruction with memory operand causes SIGSEGV when tring to continue execution
Pauli
1850258 at bugs.launchpad.net
Tue Oct 29 15:53:17 UTC 2019
A bit more debugging I see that signal comes from kernel (si_code=0x80)
but it claims null pointer reference. I don't understand how it could be
a null pointer .... I would need to have better understanding what
happens in gdb and kernel to trigger the SIGSEGV.
I found out also that workaround is to have breakpoint but disable it
after stopping on the problematic instruction. If breakpoint isn't
active then execution continues without issues. Only issues is that I
don't know full set of instructions which actually trigger this issue. I
have had issues with some other memory referencing VEX coded
instructions. But I also have examples of memory reference instructions
which don't trigger the bug.
I attached updated test2.cc which has now signal handling dumping
siginfo.
Reading symbols from ./test2...
(gdb) b main
Breakpoint 1 at 0x650: file test2.cc, line 41.
(gdb) r
Starting program: /home/coren/project/test2
Breakpoint 1, main () at test2.cc:41
41 asm("\tvmovdqa %1, %0\n" : "=x" (bar) : "xm" (foo));
(gdb) disassemble
Dump of assembler code for function main():
=> 0x0000555555554650 <+0>: vmovdqa 0x19d8(%rip),%xmm0 # 0x555555556030 <foo>
0x0000555555554658 <+8>: vmovd %xmm0,%eax
0x000055555555465c <+12>: retq
End of assembler dump.
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
main () at test2.cc:41
41 asm("\tvmovdqa %1, %0\n" : "=x" (bar) : "xm" (foo));
(gdb)
Continuing.
sig: 11, ctx: 0x7fffffffd740
si_signo: 11, si_erron: 0, si_code: 128
si_addr: (nil), si_addr_lsb: 0, si_pid: 0, si_uid: 0
Breakpoint 1, main () at test2.cc:41
41 asm("\tvmovdqa %1, %0\n" : "=x" (bar) : "xm" (foo));
(gdb)
Continuing.
Program received signal SIGSEGV, Segmentation fault.
main () at test2.cc:41
41 asm("\tvmovdqa %1, %0\n" : "=x" (bar) : "xm" (foo));
(gdb)
Continuing.
sig: 11, ctx: 0x7fffffffd740
si_signo: 11, si_erron: 0, si_code: 128
si_addr: (nil), si_addr_lsb: 0, si_pid: 0, si_uid: 0
Breakpoint 1, main () at test2.cc:41
41 asm("\tvmovdqa %1, %0\n" : "=x" (bar) : "xm" (foo));
(gdb) dis 1
(gdb) c
Continuing.
[Inferior 1 (process 9091) exited with code 01]
** Attachment added: "test2.cc (A test case with signal handler returning)"
https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1850258/+attachment/5301182/+files/test2.cc
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gdb in Ubuntu.
https://bugs.launchpad.net/bugs/1850258
Title:
First breakpoint at AVX instruction with memory operand causes SIGSEGV
when tring to continue execution
Status in gdb package in Ubuntu:
New
Bug description:
I noticed random looking SIGSEGV to application when trying to
continue execution after first breakpoint. I now seem to have narrowed
the issue to SIMD instruction with memory operand as first breakpoint
location. I haven't managed to figure out why the SIGSEGV is delivered
to the debugger application.
It is important have first breakpoint exactly at a problematic
instructions. If I first break on a different instruction then later
breakpoints won't reproduce that crash
I haven't tested if this is a hardware specific issue.
I managed to write a simple test case which reproduces the crash if
breakpoint is set. I attached the test.cc which includes compilation
and testing instructions. test.cc is supposed to generate a simple
main function like:
Dump of assembler code for function main():
=> 0x0000555555554520 <+0>: vmovdqa 0x1af8(%rip),%xmm0 # 0x555555556020 <foo>
0x0000555555554528 <+8>: vmovd %xmm0,%eax
0x000055555555452c <+12>: retq
I set breakpoint with:
b main
Then either continue or stepping causes SIGSEGV to the debugged
application.
This was happening already with disco. I only now figured out enough
details to make a simple test case which is worth a bug report.
ProblemType: Bug
DistroRelease: Ubuntu 19.10
Package: gdb 8.3-0ubuntu1
ProcVersionSignature: Ubuntu 5.3.0-19.20-generic 5.3.1
Uname: Linux 5.3.0-19-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu8
Architecture: amd64
CurrentDesktop: GNOME
Date: Tue Oct 29 09:44:52 2019
InstallationDate: Installed on 2037-12-25 (-6632 days ago)
InstallationMedia: Lubuntu 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.1)
SourcePackage: gdb
UpgradeStatus: Upgraded to eoan on 2019-10-27 (1 days ago)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1850258/+subscriptions
More information about the foundations-bugs
mailing list