This bug is missing log files that will aid in diagnosing the problem.
While running an Ubuntu kernel (not a mainline or third-party kernel)
please enter the following command in a terminal window:

apport-collect 1845180

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable
to run this command, please add a comment stating that fact and change
the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the
Ubuntu Kernel Team.

** Changed in: linux (Ubuntu)
       Status: New => Incomplete

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1845180

Title:
  strace deadlock when tracing a trivial Go program

Status in linux package in Ubuntu:
  Incomplete

Bug description:
  Intially found when running snapd integration test suite on Arch on
  5.2.x kernels. The problem was reproduced on daily eoan cloud images
  with kernel Ubuntu 5.3.0-10.11-generic 5.3.0-rc8 (as reported in
  /proc/version_signature)

  Stracing trivial Go binary results in a deadlock when both strace and
  the binary being traced end up in D state.

  Example code:

  ```
  package main

  import (
      "os"
      "syscall"
  )

  func main() {
      syscall.Exec("/bin/echo", []string{"/bin/echo", "Hello"}, os.Environ())
  }
  ```

  $ go build exec.go
  $ while true; do echo '- go'; strace -f -e 'execve' ./exec 2>/dev/null ; done
  ..
  Hello
  - go
  Hello
  - go
  Hello
  - go
  ^C

  At which point strace does not react to ^C. This can only be unlocked
  by issuing SIGKILL to either strace or the binary being traced.

  Process list:

    PID TTY      STAT   TIME COMMAND
    808 ?        Ss     0:00 sshd: guest [priv]
   1003 ?        S      0:01  \_ sshd: guest@pts/0,pts/1,pts/2
   1038 pts/0    Ss     0:00      \_ -bash
  23473 pts/0    D+     0:00      |   \_ strace -f -e execve ./exec
  23476 pts/0    Dl+    0:00      |       \_ ./exec

  The dump of blocked kernel tasks:

  [  414.886023] sysrq: Show Blocked State
  [  414.886695]   task                        PC stack   pid father
  [  414.886739] strace          D    0 23473   1038 0x00000000
  [  414.886741] Call Trace:
  [  414.886747]  __schedule+0x2b9/0x6c0
  [  414.886748]  schedule+0x42/0xb0
  [  414.886750]  schedule_preempt_disabled+0xe/0x10
  [  414.886751]  __mutex_lock.isra.0+0x182/0x4f0
  [  414.886752]  __mutex_lock_killable_slowpath+0x13/0x20
  [  414.886754]  mutex_lock_killable+0x2e/0x40
  [  414.886756]  mm_access+0x27/0xa0
  [  414.886758]  process_vm_rw_core.isra.0+0x10f/0x590
  [  414.886760]  ? __switch_to_asm+0x40/0x70
  [  414.886761]  ? __switch_to_asm+0x34/0x70
  [  414.886762]  ? __switch_to_asm+0x34/0x70
  [  414.886763]  ? __switch_to_asm+0x40/0x70
  [  414.886764]  ? reschedule_interrupt+0xa/0x20
  [  414.886767]  ? __check_object_size+0x4d/0x150
  [  414.886770]  ? _copy_from_user+0x3e/0x60
  [  414.886772]  ? rw_copy_check_uvector+0x62/0x110
  [  414.886774]  ? __check_object_size+0x4d/0x150
  [  414.886774]  ? _copy_from_user+0x3e/0x60
  [  414.886776]  process_vm_rw+0x106/0x130
  [  414.886778]  ? common_file_perm+0x5e/0x110
  [  414.886780]  ? vfs_write+0x173/0x1a0
  [  414.886781]  ? ksys_write+0x67/0xe0
  [  414.886782]  __x64_sys_process_vm_readv+0x2b/0x30
  [  414.886785]  do_syscall_64+0x5a/0x130
  [  414.886786]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
  [  414.886788] RIP: 0033:0x7fa7b90ec19e
  [  414.886794] Code: Bad RIP value.
  [  414.886794] RSP: 002b:00007ffc293ab9f8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000136
  [  414.886796] RAX: ffffffffffffffda RBX: 00007ffc293aba90 RCX: 
00007fa7b90ec19e
  [  414.886796] RDX: 0000000000000001 RSI: 00007ffc293aba00 RDI: 
0000000000005bb5
  [  414.886797] RBP: 000000c00008a010 R08: 0000000000000001 R09: 
0000000000000000
  [  414.886797] R10: 00007ffc293aba10 R11: 0000000000000246 R12: 
0000000000001000
  [  414.886797] R13: 0000000000001000 R14: 0000000000005bb5 R15: 
0000000000000000
  [  414.886799] exec            D    0 23476  23473 0x80004003
  [  414.886800] Call Trace:
  [  414.886802]  __schedule+0x2b9/0x6c0
  [  414.886803]  schedule+0x42/0xb0
  [  414.886805]  de_thread+0x1c3/0x480
  [  414.886806]  flush_old_exec+0x2a/0x260
  [  414.886808]  ? load_elf_phdrs+0x70/0xb0
  [  414.886809]  load_elf_binary+0x344/0x11e0
  [  414.886810]  ? get_user_pages_remote+0x146/0x230
  [  414.886811]  ? get_acl+0x1d/0x120
  [  414.886813]  ? ima_bprm_check+0x87/0xb0
  [  414.886814]  search_binary_handler+0x8b/0x1c0
  [  414.886816]  __do_execve_file.isra.0+0x4fe/0x860
  [  414.886817]  __x64_sys_execve+0x39/0x50
  [  414.886818]  do_syscall_64+0x5a/0x130
  [  414.886820]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
  [  414.886820] RIP: 0033:0x459ffb
  [  414.886821] Code: Bad RIP value.
  [  414.886822] RSP: 002b:000000c000082e40 EFLAGS: 00000206 ORIG_RAX: 
000000000000003b
  [  414.886822] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 
0000000000459ffb
  [  414.886823] RDX: 000000c000098000 RSI: 000000c000096000 RDI: 
000000c00008a010
  [  414.886823] RBP: 000000c000082ed0 R08: 0000000000000000 R09: 
0000000000000000
  [  414.886824] R10: 0000000000000000 R11: 0000000000000206 R12: 
000000c00009a848
  [  414.886824] R13: 000000000000085b R14: 000000c00009a848 R15: 
000000c0000980b0

  A patch was proposed on LKML back in 2016
  https://lore.kernel.org/patchwork/patch/719314/ but it was not
  accepted into mainline.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1845180/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to