Regression: strace >=4.8 does not show filenames when tracing `man`

Andrew Guertin lists at dolphinling.net
Mon Mar 30 02:37:33 UTC 2015


When running the command
   `strace -e trace=file man`
I don't get filenames in the output. For all other executables I've 
tried, strace works fine. Only man has problems.

The output in versions 4.8, 4.9, and 4.10 looks like

execve("/usr/bin/man", ["man"], [/* 70 vars */]) = 0
access(0x7fcc920558d0, R_OK)            = -1 ENOENT (No such file or 
directory)
open(0x7fcc9205327d, O_RDONLY|O_CLOEXEC) = 3
open(0x7fcc922511b8, O_RDONLY|O_CLOEXEC) = 3
open(0x7fcc91e075a0, O_RDONLY|O_CLOEXEC) = 3
open(0x408ee3, O_RDONLY)                = 3
open(0x7fff5b0acc40, O_RDONLY)          = -1 ENOENT (No such file or 
directory)
open(0x7fff5b0acc40, O_RDONLY)          = -1 ENOENT (No such file or 
directory)
open(0x7fff5b0acc40, O_RDONLY)          = 4
What manual page do you want?


In strace 4.7, it worked, but there were errors (again, these errors 
only show when tracing man, not other programs) :

execve("/usr/bin/man", ["man"], [/* 70 vars */]) = 0
access(process_vm_readv: Operation not permitted
"/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open(process_vm_readv: Operation not permitted
"/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open(process_vm_readv: Operation not permitted
"/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open(process_vm_readv: Operation not permitted
"/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open(process_vm_readv: Operation not permitted
"/etc/man.conf", O_RDONLY)         = 3
open(process_vm_readv: Operation not permitted
"/usr/share/locale/en_US.UTF-8/man", O_RDONLY) = -1 ENOENT (No such file 
or directory)
open(process_vm_readv: Operation not permitted
"/usr/share/locale/en_US.UTF-8/LC_MESSAGES/man", O_RDONLY) = -1 ENOENT 
(No such file or directory)
open(process_vm_readv: Operation not permitted
"/usr/share/locale/en/man", O_RDONLY) = 4
What manual page do you want?


In strace 4.6 and 4.5.20 (older versions untested) everything worked fine:

execve("/usr/bin/man", ["man"], [/* 70 vars */]) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or 
directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/etc/man.conf", O_RDONLY)         = 3
open("/usr/share/locale/en_US.UTF-8/man", O_RDONLY) = -1 ENOENT (No such 
file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/man", O_RDONLY) = -1 
ENOENT (No such file or directory)
open("/usr/share/locale/en/man", O_RDONLY) = 4


All of this testing was done on gentoo.




More information about the Strace-devel mailing list