This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.26.9000-1111-g08c6e95


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  08c6e95234c60a5c2f37532d1111acf084f39345 (commit)
       via  d8b778907e5270fdeb70459842ffbc20bd2ca5e1 (commit)
      from  b303185df9b4f3d097956fe566a32aed4f85b127 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=08c6e95234c60a5c2f37532d1111acf084f39345

commit 08c6e95234c60a5c2f37532d1111acf084f39345
Author: Florian Weimer <fweimer@redhat.com>
Date:   Thu Jan 11 13:13:28 2018 +0100

    csu: Update __libgcc_s_init comment
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

diff --git a/ChangeLog b/ChangeLog
index b5fb4df..17506d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2018-01-11  Florian Weimer  <fweimer@redhat.com>
 
+	* sysdeps/gnu/unwind-resume.c (__libgcc_s_init): Update comment
+	and error message.
+
+2018-01-11  Florian Weimer  <fweimer@redhat.com>
+
 	[BZ #22636]
 	* nptl/Makefile (tests): Add tst-minstack-cancel, tst-minstack-exit.
 	* nptl/tst-minstack-cancel.c, nptl/tst-minstack-exit.c: New files.
diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c
index 94704c9..7f9a1bf 100644
--- a/sysdeps/gnu/unwind-resume.c
+++ b/sysdeps/gnu/unwind-resume.c
@@ -35,13 +35,17 @@ __libgcc_s_init (void)
   void *resume, *personality;
   void *handle;
 
-  handle = __libc_dlopen (LIBGCC_S_SO);
+  /* Use RTLD_NOW here for consistency with pthread_cancel_init.
+     RTLD_NOW will rarely make a difference here because unwinding is
+     already in progress, so libgcc_s.so has already been loaded if
+     its unwinder is used.  */
+  handle = __libc_dlopen_mode (LIBGCC_S_SO, RTLD_NOW | __RTLD_DLOPEN);
 
   if (handle == NULL
       || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL
       || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL)
     __libc_fatal (LIBGCC_S_SO
-                  " must be installed for pthread_cancel to work\n");
+                  " must be installed for unwinding to work\n");
 
 #ifdef PTR_MANGLE
   PTR_MANGLE (resume);

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d8b778907e5270fdeb70459842ffbc20bd2ca5e1

commit d8b778907e5270fdeb70459842ffbc20bd2ca5e1
Author: Florian Weimer <fweimer@redhat.com>
Date:   Thu Jan 11 13:13:14 2018 +0100

    nptl: Add tst-minstack-cancel, tst-minstack-exit [BZ #22636]
    
    I verified that without the guard accounting change in commit
    630f4cc3aa019ede55976ea561f1a7af2f068639 (Fix stack guard size
    accounting) and RTLD_NOW for libgcc_s introduced by commit
    f993b8754080ac7572b692870e926d8b493db16c (nptl: Open libgcc.so with
    RTLD_NOW during pthread_cancel), the tst-minstack-cancel test fails on
    an AVX-512F machine.  tst-minstack-exit still passes, and either of
    the mentioned commit by itself frees sufficient stack space to make
    tst-minstack-cancel pass, too.
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

diff --git a/ChangeLog b/ChangeLog
index 3025edf..b5fb4df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-11  Florian Weimer  <fweimer@redhat.com>
+
+	[BZ #22636]
+	* nptl/Makefile (tests): Add tst-minstack-cancel, tst-minstack-exit.
+	* nptl/tst-minstack-cancel.c, nptl/tst-minstack-exit.c: New files.
+
 2018-01-10  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #22693]
diff --git a/nptl/Makefile b/nptl/Makefile
index 7265c0a..12c69f9 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -307,7 +307,7 @@ tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
 	tst-bad-schedattr \
 	tst-thread_local1 tst-mutex-errorcheck tst-robust10 \
 	tst-robust-fork tst-create-detached tst-memstream \
-	tst-thread-exit-clobber
+	tst-thread-exit-clobber tst-minstack-cancel tst-minstack-exit
 
 tests-internal := tst-rwlock19 tst-rwlock20 \
 		  tst-sem11 tst-sem12 tst-sem13 \
diff --git a/nptl/tst-minstack-cancel.c b/nptl/tst-minstack-cancel.c
new file mode 100644
index 0000000..a306320
--- /dev/null
+++ b/nptl/tst-minstack-cancel.c
@@ -0,0 +1,48 @@
+/* Test cancellation with a minimal stack size.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Note: This test is similar to tst-minstack-exit, but is separate to
+   avoid spurious test passes due to warm-up effects.  */
+
+#include <limits.h>
+#include <unistd.h>
+#include <support/check.h>
+#include <support/xthread.h>
+
+static void *
+threadfunc (void *closure)
+{
+  while (1)
+    pause ();
+  return NULL;
+}
+
+static int
+do_test (void)
+{
+  pthread_attr_t attr;
+  xpthread_attr_init (&attr);
+  xpthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
+  pthread_t thr = xpthread_create (&attr, threadfunc, NULL);
+  xpthread_cancel (thr);
+  TEST_VERIFY (xpthread_join (thr) == PTHREAD_CANCELED);
+  xpthread_attr_destroy (&attr);
+  return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/nptl/tst-minstack-exit.c b/nptl/tst-minstack-exit.c
new file mode 100644
index 0000000..9c7e9a4
--- /dev/null
+++ b/nptl/tst-minstack-exit.c
@@ -0,0 +1,46 @@
+/* Test that pthread_exit works with the minimum stack size.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Note: This test is similar to tst-minstack-cancel, but is separate
+   to avoid spurious test passes due to warm-up effects.  */
+
+#include <limits.h>
+#include <unistd.h>
+#include <support/check.h>
+#include <support/xthread.h>
+
+static void *
+threadfunc (void *closure)
+{
+  pthread_exit (threadfunc);
+  return NULL;
+}
+
+static int
+do_test (void)
+{
+  pthread_attr_t attr;
+  xpthread_attr_init (&attr);
+  xpthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
+  pthread_t thr = xpthread_create (&attr, threadfunc, NULL);
+  TEST_VERIFY (xpthread_join (thr) == threadfunc);
+  xpthread_attr_destroy (&attr);
+  return 0;
+}
+
+#include <support/test-driver.c>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   11 ++++++
 nptl/Makefile                                      |    2 +-
 .../tst-minstack-cancel.c                          |   34 ++++++++++++-------
 .../tst-minstack-exit.c                            |   32 +++++++++++-------
 sysdeps/gnu/unwind-resume.c                        |    8 +++-
 5 files changed, 58 insertions(+), 29 deletions(-)
 copy sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c => nptl/tst-minstack-cancel.c (58%)
 copy sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c => nptl/tst-minstack-exit.c (58%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]