[PATCHv2] Fix test failure with -DNDEBUG.

Message ID fd9fbb3c-98b0-b564-e03f-2abde833f9d5@redhat.com
State Committed
Headers

Commit Message

Carlos O'Donell Aug. 30, 2018, 4:34 p.m. UTC
  On 08/30/2018 12:24 PM, Florian Weimer wrote:
> On 08/30/2018 05:43 PM, Carlos O'Donell wrote:
>> +    * elf/tst-dlopen-aout.c: Include support/check.h. Use TEST_VERIFY.
> 
> Needs updating.  “e.g.” in the comment should probably be “that is” or “i.e.”.  Looks fine otherwise.

Thanks. Committed v3 with Changelog and typo fix.
  

Patch

From d330f31af68f96dde82840d1e9343b479a8c179e Mon Sep 17 00:00:00 2001
From: Carlos O'Donell <carlos@redhat.com>
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 <carlos@redhat.com>
---
 ChangeLog             |  5 +++++
 elf/tst-dlopen-aout.c | 12 ++++++------
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b3689a68c9..21d914141c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@ 
+2018-08-30  Carlos O'Donell  <carlos@redhat.com>
+
+	* elf/tst-dlopen-aout.c: Include support/xthread.h. Use
+	xpthread_create and xpthread_join.
+
 2018-08-30  Florian Weimer  <fweimer@redhat.com>
 
 	* stdlib/stdlib.h (reallocarray): Make available under __USE_MISC.
diff --git a/elf/tst-dlopen-aout.c b/elf/tst-dlopen-aout.c
index 9038e2096a..b0264515cf 100644
--- a/elf/tst-dlopen-aout.c
+++ b/elf/tst-dlopen-aout.c
@@ -27,6 +27,7 @@ 
 #include <dlfcn.h>
 #include <stdio.h>
 #include <pthread.h>
+#include <support/xthread.h>
 
 __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 i.e. running out of surplus slotinfo entries
+	 for TLS.  */
+      thr = xpthread_create (NULL, fn, NULL);
+      xpthread_join (thr);
     }
 
   return 0;
-- 
2.17.1