+++ This bug was initially created as a clone of Bug #1788636 +++ Description of problem: strace -k doesn't produce stack trace due to no dwarf found if it is being attached to running process. Version-Release number of selected component (if applicable): strace-5.3-1.fc31.x86_64 # rpm -qa '*-debuginfo' dhcp-debuginfo-4.4.1-19.fc31.x86_64 dhcp-server-debuginfo-4.4.1-19.fc31.x86_64 glibc-debuginfo-2.30-8.fc31.x86_64 How reproducible: 100% Steps to Reproduce: 1. dhcpd -f 2. strace -k -p `pidof dhcpd` Actual results: select(9, [5<RAW:[0.0.0.0:1]> 6<socket:[41801]> 8<UDP:[0.0.0.0:67]>], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) > No DWARF information found Expected results: select(9, [5<RAW:[0.0.0.0:1]> 6<socket:[43189]> 8<UDP:[0.0.0.0:67]>], [], NULL, NULL) = ? ERESTARTNOHAND (To be restarted if no handler) > /usr/lib64/libc-2.30.so(__select+0x1a) [0xf8f1a] > /usr/sbin/dhcpd(isc__socketmgr_waitevents+0x76) [0x257e06] > /usr/sbin/dhcpd(evloop+0x12f) [0x24725f] > /usr/sbin/dhcpd(isc__app_ctxrun+0x138) [0x247778] > /usr/sbin/dhcpd(dispatch+0x1b) [0x6cf7b] > /usr/sbin/dhcpd(main+0xf66) [0x18d16] > /usr/lib64/libc-2.30.so(__libc_start_main+0xf2) [0x271a2] > /usr/sbin/dhcpd(_start+0x2d) [0x1949d] Additional info: If the application is started under strace the option works fine (as per Expected result) --- Additional comment from Dmitry V. Levin on 2020-01-07 19:40:11 UTC --- This happens due to a cache initialization bug that results to a failure of printing stack trace for early syscalls. Early syscalls in this case are those that precede the first syscall from memory mapping or execve families. When a process is started by strace itself, the first syscall is usually execve. Fixed by upstream commit v5.4-18-g69b2c33a77fa687feb41fafdbe187013aa812384, available at https://github.com/strace/strace/commit/69b2c33a77fa687feb41fafdbe187013aa812384 https://gitlab.com/strace/strace/commit/69b2c33a77fa687feb41fafdbe187013aa812384 Thanks for reporting! --- Additional comment from Dmitry V. Levin on 2020-01-07 19:44:40 UTC --- FWIW, I have no idea when the fix will reach Fedora because updates of strace package are blocked by https://bugzilla.redhat.com/show_bug.cgi?id=1783584 --- Additional comment from Dmitry V. Levin on 2020-01-07 20:12:11 UTC --- Meanwhile, you can install a fixed strace package from the scratch build for f31 at https://koji.fedoraproject.org/koji/taskinfo?taskID=40246259
Upstream commits: 69b2c33a77fa687feb41fafdbe187013aa812384 "unwind-libdw: fix initialization of libdwfl cache" 35e080ae319d25c1df82855cda3a1bb014e90ba6 "syscall: do not capture stack trace while the tracee executes strace code" 8e515c744935fe67e6a1b941f4c5414472c163b7 "tests: add strace-k-p test"
Can be verified by checking the result of the included strace-k-p.test[1] against the new and the old strace version. [1] http://pkgs.devel.redhat.com/cgit/rpms/strace/diff/0041-tests-add-strace-k-p-test.patch?h=devtoolset-9.1-rhel-6&id=5e712c09c6088fe07d232ecc0d7278e1d038f6a8