serial debug: permission denied

<[email protected]>
Newsgroups gmane.linux.kernel.kernelnewbies
Message-ID <[email protected]>
Hi all,

 

I'm attempting to use gdb to debug over a serial connection using two VM's.
I'm getting a "Permission denied" when I try to connect over the serial com
port. Gdb has the following output when I try to connect: 

 

Reading symbols from vmlinux...

+target remote /dev/ttyS1

Remote debugging using /dev/ttyS1

[remote] start_remote_1: enter

  [remote] Sending packet:
$qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;vfork-e
vents+;exec-events+;vContSupported+;QThreadEvents+;no-resumed+;memory-taggin
g+#ec

  [remote] Junk: d

  [remote] Junk: i

  [remote] Junk: a

  [remote] Junk: g

  [remote] Junk: :

  [remote] Junk:

  [remote] Received Nak

  [remote] Sending packet:
$qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;vfork-e
vents+;exec-events+;vContSupported+;QThreadEvents+;no-resumed+;memory-taggin
g+#ec

  [remote] Junk: 2

  [remote] Junk: 2

  [remote] Junk: :

  [remote] Junk:

  [remote] Junk: P

  [remote] Junk: e

  [remote] Junk: r

  [remote] Junk: m

  [remote] Junk: i

  [remote] Junk: s

  [remote] Junk: s

  [remote] Junk: i

  [remote] Junk: o

  [remote] Junk: n

  [remote] Junk:

  [remote] Junk: d

  [remote] Junk: e

  [remote] Junk: n

  [remote] Junk: i

  [remote] Junk: e

  [remote] Junk: d

  [remote] Junk: ^M

  [remote] Junk:

 

  [remote] Junk: [

  [remote] Junk: 2

  [remote] Junk: ]

  [remote] Junk: k

  [remote] Junk: d

  [remote] Junk: b

  [remote] Junk: >

  [remote] Junk:

  [remote] Junk: :

  [remote] Junk: m

  [remote] Junk: u

  [remote] Junk: l

  [remote] Junk: t

  [remote] Junk: i

  [remote] Junk: p

  [remote] Junk: r

  [remote] Junk: o

  [remote] Junk: c

  [remote] Junk: e

  [remote] Junk: s

  [remote] Junk: s

  [remote] Received Ack

  [remote] read_frame: Bad checksum, sentsum=0xec, csum=0x8,
buf=qSupporteddiag: -22: Permission denied\r\n[2]kdb>
:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;vfork-events+;exec
-events+;vContSupported+;QThreadEvents+;no-resumed+;memory-tagging+

  [remote] getpkt: Timed out.

  [remote] getpkt: Timed out.

Ignoring packet error, continuing...

  [remote] packet_ok: Packet qSupported (supported-packets) is supported

  [remote] Sending packet: $vCont?#49

  [remote] Received Nak

  [remote] Sending packet: $vCont?#49

  [remote] Received Ack

  [remote] Packet received: vCont?

  [remote] packet_ok: Packet vCont (verbose-resume) is NOT supported

  [remote] packet_ok: Packet vCont (verbose-resume) is NOT supported

  [remote] Sending packet: $vMustReplyEmpty#3a

  [remote] putpkt_binary: Packet instead of Ack, ignoring it

  [remote] Received Ack

  [remote] Packet received: vMustReplyEmpty

[remote] start_remote_1: exit

Remote replied unexpectedly to 'vMustReplyEmpty': vMustReplyEmpty

+quit

 

It seems the target is denying permission. I've been searching around but
have not found anything similar. I tried opening the permissions on the
/dev/ttyS1 on both VM's to rwxrwxrwx and that doesn't help. There are no
SELinux warnings on the debugger VM. I don't know if SELinux is causing a
problem on the target VM.

 

More details about the configuration:

 

I'm running two Rocky 9.3 VM's on Windows Hyper-V that I have connected over
a named pipe using the Powershell Set-VMComport commands:

 

Set-VMComport -VMName "Rocky-Debugger" -Number 2 -Path \\.\pipe\rocky-pipe-2
<file://./pipe/rocky-pipe-2> 

Set-VMComport -VMName "Rocky " -Number 2 -Path \\.\pipe\rocky-pipe-2
<file://./pipe/rocky-pipe-2> 

 

I downloaded the 6.8.5 kernel from the kernel.org website and compiled it on
the "Rocky" vm using the following configuration:

 

#

# Generic Kernel Debugging Instruments

#

CONFIG_MAGIC_SYSRQ=y

CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1

CONFIG_MAGIC_SYSRQ_SERIAL=y

CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""

CONFIG_DEBUG_FS=y

CONFIG_DEBUG_FS_ALLOW_ALL=y

# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set

# CONFIG_DEBUG_FS_ALLOW_NONE is not set

CONFIG_HAVE_ARCH_KGDB=y

CONFIG_KGDB=y

CONFIG_KGDB_HONOUR_BLOCKLIST=y

CONFIG_KGDB_SERIAL_CONSOLE=y

CONFIG_KGDB_TESTS=y

# CONFIG_KGDB_TESTS_ON_BOOT is not set

CONFIG_KGDB_LOW_LEVEL_TRAP=y

CONFIG_KGDB_KDB=y

CONFIG_KDB_DEFAULT_ENABLE=0x0

CONFIG_KDB_KEYBOARD=y

CONFIG_KDB_CONTINUE_CATASTROPHIC=0

CONFIG_ARCH_HAS_EARLY_DEBUG=y

CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y

# CONFIG_UBSAN is not set

CONFIG_HAVE_ARCH_KCSAN=y

CONFIG_HAVE_KCSAN_COMPILER=y

# CONFIG_KCSAN is not set

# end of Generic Kernel Debugging Instruments

 

I added the kernel args "console=tty0 console=ttyS0,115200
kgdboc=ttyS1,115200". I start the VM with the new kernel and run the command
"echo g > /proc/sysrq-trigger".

 

On the "Rocky-debugger" vm, I added my user to "dialout". The permissions on
/dev/ttyS1 is rw for the group.

 

I set the following in .gdbinit, "set serial baud 115200".

 

Run "gdb vmlinux", then "target remote /dev/ttyS1". That's when I get the
"Permission denied". 

 

I can connect to the console over serial using "sudo screen ttyS0" and that
works just fine. So I don't believe it's a Windows Hyper-V permissions
issue.

 

I'm out of ideas. Any help is appreciated!

 

Thanks,

Bryan Carroll

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.