From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753301AbbJUDxe (ORCPT ); Tue, 20 Oct 2015 23:53:34 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:9163 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752786AbbJUDxd (ORCPT ); Tue, 20 Oct 2015 23:53:33 -0400 X-Greylist: delayed 1532 seconds by postgrey-1.27 at vger.kernel.org; Tue, 20 Oct 2015 23:53:32 EDT Subject: Re: [PATCH 1/2] wait/ptrace: always assume __WALL if the child is traced To: syzkaller@googlegroups.com, Oleg Nesterov References: <20151020171740.GA29290@redhat.com> <20151020171754.GA29304@redhat.com> <20151020153155.e03f4219da4014efe6f810b0@linux-foundation.org> Cc: Dmitry Vyukov , Alexander Potapenko , Denys Vlasenko , Eric Dumazet , Jan Kratochvil , Julien Tinnes , Kees Cook , Kostya Serebryany , Linus Torvalds , "Michael Kerrisk (man-pages)" , Pedro Alves , Robert Swiecki , Roland McGrath , linux-kernel@vger.kernel.org From: Vasily Averin X-Enigmail-Draft-Status: N1110 Message-ID: <5627062B.5010400@virtuozzo.com> Date: Wed, 21 Oct 2015 06:27:39 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <20151020153155.e03f4219da4014efe6f810b0@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 21.10.2015 01:31, Andrew Morton wrote: > On Tue, 20 Oct 2015 19:17:54 +0200 Oleg Nesterov wrote: > >> The following program (simplified version of generated by syzkaller) >> >> #include >> #include >> #include >> #include >> #include >> >> void *thread_func(void *arg) >> { >> ptrace(PTRACE_TRACEME, 0,0,0); >> return 0; >> } >> >> int main(void) >> { >> pthread_t thread; >> >> if (fork()) >> return 0; >> >> while (getppid() != 1) >> ; >> >> pthread_create(&thread, NULL, thread_func, NULL); >> pthread_join(thread, NULL); >> return 0; >> } >> >> creates the unreapable zombie if /sbin/init doesn't use __WALL. >> >> This is not a kernel bug, at least in a sense that everything works as >> expected: debugger should reap a traced sub-thread before it can reap >> the leader, but without __WALL/__WCLONE do_wait() ignores sub-threads. >> >> Unfortunately, it seems that /sbin/init in most (all?) distributions >> doesn't use it and we have to change the kernel to avoid the problem. > > Well, to fix this a distro needs to roll out a new kernel. Or a new > init(8). Is there any reason to believe that distributing/deploying a > new kernel is significantly easier for everyone? Because fixing init > sounds like a much preferable solution to this problem. Patched kernel allows to run obsoleted distro inside containers.