From owner-freebsd-hackers@freebsd.org Sun Nov 24 06:01:16 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4E4D41CCDE7 for ; Sun, 24 Nov 2019 06:01:16 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47LKKm1JY5z4tPf for ; Sun, 24 Nov 2019 06:01:16 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id 048FE2BCCD for ; Sun, 24 Nov 2019 06:01:16 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qt1-f182.google.com with SMTP id y39so13253605qty.0 for ; Sat, 23 Nov 2019 22:01:15 -0800 (PST) X-Gm-Message-State: APjAAAULeHuTVNOU++iZ70PUrrgNAWZPtem85WyBu6MoJ2mnAujTLY/B h2so5yx2cNKQ/fE8aGaLRTnwDCj5HY3ZTGkfRTk= X-Google-Smtp-Source: APXvYqz5xlJCgA79Pln6YcGn6PYJvM/V0zet/8wftAU713tNsF2dRNVYJ4FJMUjsJvzjASnTYO5Z/0ZbDVjV4pzMMqE= X-Received: by 2002:ac8:66d7:: with SMTP id m23mr13424108qtp.53.1574575275481; Sat, 23 Nov 2019 22:01:15 -0800 (PST) MIME-Version: 1.0 From: Kyle Evans Date: Sun, 24 Nov 2019 00:01:04 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: ptrace(2) debugging To: FreeBSD Hackers Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Nov 2019 06:01:16 -0000 Hi, I'm working on implementing `reptyr -T` on FreeBSD because I'm pretty bad about starting long-running jobs outside of tmux and often desire to reparent these jobs into tmux. I've gotten to a point where it's getting stuck in waitpid(2) when attempting to work over the session leader to ignore SIGHUP. The chain of operations looks roughly like this: PT_ATTACH -> waitpid -> kill(SIGCONT) -> PT_TO_SCE -> waitpid -> PT_TO_SCE -> waitpid Each of the waitpids are paired with a PT_LWPINFO. The first waitpid observes SIGSTOP. The second waitpid observes SIGCONT. I would expect the third to observe PL_FLAG_SCE on ptrace_lwpinfo->pl_flags, but instead it actually hangs as the target process is now sleep-inhibited and stuck in "pause" wchan. I've uploaded a truss excerpt at [0] in case it's helpful -- pid=10204 is the process I'm reparenting, initially just attached/detached to make sure reptyr *can* do this. pid=10187 is the sshd that it's running under, and pid=10188 is the shell running under that. Anyone have good advice on debugging this? It seems like it might be some kind of kernel bug, as it's already done this same dance once before when grabbing sshd and my attempts to distill it down to a simple test case failed. The FreeBSD part of reptyr needed some love, though, so that can't be discounted either. Thanks, Kyle Evans [0] https://people.freebsd.org/~kevans/truss.log