From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28216 invoked by alias); 16 Dec 2016 07:46:59 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 28092 invoked by uid 89); 16 Dec 2016 07:46:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.0 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=peruser, per-user, observing, Hx-languages-length:1646 X-HELO: mx1.redhat.com Subject: Re: nptl/tst-eintr1.c test question To: sellcey@cavium.com, libc-alpha@sourceware.org References: <201612152302.uBFN2dkC010965@sellcey-lt.caveonetworks.com> From: Florian Weimer Message-ID: Date: Fri, 16 Dec 2016 07:46:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <201612152302.uBFN2dkC010965@sellcey-lt.caveonetworks.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-SW-Source: 2016-12/txt/msg00596.txt.bz2 On 12/16/2016 12:02 AM, Steve Ellcey wrote: > FYI: The failure I get is due to to many forks causing the make process(es) to > abort: > > ../scripts/evaluate-test.sh nptl/tst-eintr1 $? false false > /home/ubuntu/sellcey/glibc-patched/obj-glibc64/nptl/tst-eintr1.test-result > /bin/sh: 2: Cannot fork > ../Rules:241: recipe for target '/home/ubuntu/sellcey/glibc-patched/obj-glibc64/nptl/tst-eintr1.out' failed > make[2]: *** [/home/ubuntu/sellcey/glibc-patched/obj-glibc64/nptl/tst-eintr1.out] Error 2 > make[2]: Leaving directory '/home/ubuntu/sellcey/glibc-patched/src/glibc/nptl' > Makefile:215: recipe for target 'nptl/tests' failed > make[1]: *** [nptl/tests] Error 2 > make[1]: Leaving directory '/home/ubuntu/sellcey/glibc-patched/src/glibc' > Makefile:9: recipe for target 'check' failed > make: *** [check] Error 2 So the failure happens outside of the test harness. This means we cannot intercept it. Some kernel developers have suggested we should just retry the fork if we get EAGAIN (and do the same for thread creation). But I don't think this is a good idea—we would either have to do it in glibc, or any shell on the planet. It's also not clear how many attempts are are needed to cover up the race. A few more details are available here: https://bugzilla.kernel.org/show_bug.cgi?id=154011 It may help to disable cgroups restrictions and avoid configuring low per-user process limits. Or you might be observing a different issue, not related to what we saw earlier this year on Fedora builders. In the end, the kernel's fork/clone implementation is buggy and has to be fixed. Florian