NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
xsrc/54364: gdb/ptrace fools the X server (?!?)
>Number: 54364
>Category: xsrc
>Synopsis: gdb/ptrace fools the X server (?!?)
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: xsrc-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Jul 09 17:10:00 +0000 2019
>Originator: Martin Husemann
>Release: NetBSD 8.99.50
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD martins.aprisoft.de 8.99.50 NetBSD 8.99.50 (GENERIC) #3: Tue Jul 9 16:32:27 CEST 2019 martin%martins.aprisoft.de@localhost:/usr/src/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
To be honest I have no idea if this an X userland problem, or a kernel thing.
I can reproduce it easily & reliable on this one machine, running the very
latest current as of earlier today (but it also happened with a few days older
versions of -current).
Problem is:
- when I run gdb in an rxvt on this machine and the debugee forks an
external program, the X server gets confused and start entering
ENTER keys (or \n) to whatever window has the focus.
- I have not found a way to make it stop, besides killing X
- I can not switch away to another console
>How-To-Repeat:
- Open rxvt (have not tried with others, probably does not matter).
- run something like "gdb sysinst" and select a vnd as target
- sysinst will fork a disklabel command
I now get an endless stream of enter keys.
Ktrace of the X server shows EAGAIN failures like this:
439 1 X CALL writev(0x1a,0x7f7fff5685b0,1)
439 1 X GIO fd 26 wrote 32 bytes
"\^\\0\M-z\M-@)\0`\^A&\^A\0\0N\M-=c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
439 1 X RET writev 32/0x20
439 1 X CALL recvmsg(0x1e,0x7f7fff568ae0,0)
439 1 X MISC msghdr: [name=0x0, namelen=0, iov=0x7f7fff568ad0, i
ovlen=1, control=0x7f7fff568b10, controllen=528, flags=4000000]
439 1 X RET recvmsg -1 errno 35 Resource temporarily unavailable
439 1 X CALL __setitimer50(0,0x7f7fff568d10,0)
439 1 X RET __setitimer50 0
439 1 X CALL __clock_gettime50(3,0x7f7fff568d20)
439 1 X RET __clock_gettime50 0
439 1 X CALL poll(0x78453bd3b700,0x14,0x32)
439 1 X RET poll 1
439 1 X CALL __setitimer50(0,0x7f7fff568d10,0)
439 1 X RET __setitimer50 0
439 1 X CALL recvmsg(0x1a,0x7f7fff568ae0,0)
439 1 X MISC msghdr: [name=0x0, namelen=0, iov=0x7f7fff568ad0, iovlen=1, control=0x7f7fff568b10, controllen=528, flags=4000000]
439 1 X GIO fd 26 read 24 bytes
"\^T\0\^F\0)\0`\^A&\^A\0\0\^F\0\0\0\0\0\0\0\^A\0\0\0"
439 1 X MISC msghdr: [name=0x0, namelen=0, iov=0x7f7fff568ad0, iovlen=1, control=0x7f7fff568b10, controllen=0, flags=0]
439 1 X RET recvmsg 24/0x18
439 1 X CALL writev(0x1a,0x7f7fff568c60,1)
439 1 X GIO fd 26 wrote 32 bytes
"\^A \M-{\M-@\^A\0\0\0\^F\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0"
439 1 X RET writev 32/0x20
439 1 X CALL writev(0x1a,0x7f7fff568c60,1)
439 1 X GIO fd 26 wrote 4 bytes
"N\M-=c\0"
439 1 X RET writev 4
439 1 X CALL recvmsg(0x1a,0x7f7fff568ae0,0)
439 1 X MISC msghdr: [name=0x0, namelen=0, iov=0x7f7fff568ad0, iovlen=1, control=0x7f7fff568b10, controllen=528, flags=4000000]
439 1 X RET recvmsg -1 errno 35 Resource temporarily unavailable
>Fix:
n/a
Home |
Main Index |
Thread Index |
Old Index