[PATCHv2] Fix test failure with -DNDEBUG.
Commit Message
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.
Comments
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,
Florian
From 25874919ebd865bc6463c02c9408fa39394f4b7e 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 | 4 ++++
elf/tst-dlopen-aout.c | 12 ++++++------
2 files changed, 10 insertions(+), 6 deletions(-)
@@ -1,3 +1,7 @@
+2018-02-30 Carlos O'Donell <carlos@redhat.com>
+
+ * elf/tst-dlopen-aout.c: Include support/check.h. Use TEST_VERIFY.
+
2018-08-28 Joseph Myers <joseph@codesourcery.com>
* sysdeps/aarch64/fpu/fenv_private.h: New file. Based on ....
@@ -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 e.g. running out of surplus slotinfo entries
+ for TLS. */
+ thr = xpthread_create (NULL, fn, NULL);
+ xpthread_join (thr);
}
return 0;
--
2.17.1