Created attachment 56123 [details] allow gdb attach if fds 0-2 are changed Version: 3.7 SVN OS: Linux With complex shell scripts bash usually forks a lot of of sub-bashes (no execve for these) and communicated via file descriptors. If you now use db-attach and one of these sub-bashes has a bug db attach will go wild for two reasons: 1. the " ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ----" will ask for input on the input fd, but this might be redirected to something like a pipe 2. gdb might no get a proper stdout/stderr but also writes to a pipe Example where the "input" is flooded with chars other than n,y or c. ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- ==22024== ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ---- Reproducible: Didn't try Here is a patch that tries to - build a sane terminal for gdb by saving the original fds - copy the input fd to the valgrind private range it also moved the static inline fd_exists to the haeder file and adds some comments about used private fds. The patch certainly requires some review
The --db-attach feature is deprecated as of valgrind 3.10.0. It will be removed in the next valgrind feature release. The built-in GDB server capabilities are superior and should be used instead. Therefore, this bug will not be fixed.