On Wed, Mar 9, 2022 at 11:20 PM Philip Guenther <guent...@gmail.com> wrote:
> On Wed, Mar 9, 2022 at 8:28 AM Rob Whitlock <rwhitloc...@gmail.com> wrote: > >> I'm trying to attach gdb to an already running cwm but I get the following >> error: >> >> ptrace: Invalid argument. >> >> Why am I getting this error? Also, I have already set >> kern.global_ptrace=1, >> and both cwm and gdb are being run by the same user. This problem occurs >> both with the gdb in base and the gdb/egdb in ports. >> > > Let me guess: the cwm process is an ancestor of the shell where you're > invoking gdb. We don't permit that as the reparenting done by ptrace() > would create a loop in the process tree, which breaks assumptions by both > kernel and userspace programs. If that's the case, run gdb from an ssh > session or something like that. > > Hmm, I guess I never updated the ptrace(2) manpage to mention that... > > Philip Guenther > Thanks, that fixed the problem. I decided to go about breaking the loop in the process tree in a slightly different (maybe some would say quick and dirty) way, which I'll describe here in case someone else has this problem. If you start an xterm from your ~/.xsession (or whatever startup script you're using) and do *not* exec your window manager, then that xterm will not be a child of your window manager. If you then try to attach gdb to your window manager, you won't get the error. In order to not have to restart your X session in case you close that special xterm, you can put the command to run xterm in a loop. while true; do xterm; done & cwm # not "exec cwm" Robert