From patchwork Thu Aug 30 15:43:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Carlos O'Donell X-Patchwork-Id: 29132 Received: (qmail 130212 invoked by alias); 30 Aug 2018 15:43:24 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 129089 invoked by uid 89); 30 Aug 2018 15:43:23 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: mail-qt0-f172.google.com Return-Path: Subject: [PATCHv2] Fix test failure with -DNDEBUG. To: Florian Weimer , GNU C Library References: <0792219b-b921-2d0e-3102-0095a45fc82f@redhat.com> From: Carlos O'Donell Openpgp: preference=signencrypt Message-ID: <9114fb74-7592-bd62-1442-2e9a666972b0@redhat.com> Date: Thu, 30 Aug 2018 11:43:18 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: On 08/30/2018 11:13 AM, Florian Weimer wrote: > On 08/30/2018 05:08 PM, Carlos O'Donell wrote: >>         rc = pthread_create (&thr, NULL, fn, NULL); >> -      assert (rc == 0); >> +      TEST_VERIFY (rc == 0); >>           rc = pthread_join (thr, NULL); >> -      assert (rc == 0); >> +      TEST_VERIFY (rc == 0); > > Both should actually be TEST_VERIFY_EXIT, I assume, and that would be > close to xpthread_create and xpthread_join. I might as well just cleanup the test. v2 - Use xpthread_create, xpthread_join. The threads need to be started for the test to validly use up slotinfo entries. From 25874919ebd865bc6463c02c9408fa39394f4b7e Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Thu, 30 Aug 2018 11:01:33 -0400 Subject: [PATCH] Fix test failure with -DNDEBUG. The elf/tst-dlopen-aout.c test uses asserts to verify properties of the test execution. Instead of using assert it should use xpthread_create and xpthread_join to catch errors starting the threads and fail the test. This shows up in Fedora 28 when building for i686-pc-linux-gnu and using gcc 8.1.1. Tested on i686, and fixes a check failure with -DNDEBUG. Signed-off-by: Carlos O'Donell --- ChangeLog | 4 ++++ elf/tst-dlopen-aout.c | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index cdc9b8c207..00ea098fe1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2018-02-30 Carlos O'Donell + + * elf/tst-dlopen-aout.c: Include support/check.h. Use TEST_VERIFY. + 2018-08-28 Joseph Myers * sysdeps/aarch64/fpu/fenv_private.h: New file. Based on .... diff --git a/elf/tst-dlopen-aout.c b/elf/tst-dlopen-aout.c index 9038e2096a..89119d62fa 100644 --- a/elf/tst-dlopen-aout.c +++ b/elf/tst-dlopen-aout.c @@ -27,6 +27,7 @@ #include #include #include +#include __thread int x; @@ -45,7 +46,6 @@ do_test (int argc, char *argv[]) { pthread_t thr; void *p; - int rc; p = dlopen (argv[0], RTLD_LAZY); if (p != NULL) @@ -53,11 +53,11 @@ do_test (int argc, char *argv[]) fprintf (stderr, "dlopen unexpectedly succeeded\n"); return 1; } - rc = pthread_create (&thr, NULL, fn, NULL); - assert (rc == 0); - - rc = pthread_join (thr, NULL); - assert (rc == 0); + /* We create threads to force TLS allocation, which triggers + the original bug e.g. running out of surplus slotinfo entries + for TLS. */ + thr = xpthread_create (NULL, fn, NULL); + xpthread_join (thr); } return 0; -- 2.17.1