]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
libanl: properly cleanup if first helper thread creation failed (bug 22927)
authorAndreas Schwab <schwab@suse.de>
Tue, 6 Nov 2018 16:11:25 +0000 (17:11 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 6 Nov 2018 16:11:25 +0000 (17:11 +0100)
(cherry picked from commit bd3b0fbae33a9a4cc5e2daf049443d5cf03d4251)

ChangeLog
NEWS
resolv/gai_misc.c

index 6ee22553d5a298575090ae6456d7bd8680ce14d0..607e95cb73e42fd4d4e2dce01a39596d28632ad0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-05  Andreas Schwab  <schwab@suse.de>
+
+       [BZ #22927]
+       * resolv/gai_misc.c (__gai_enqueue_request): Don't crash if
+       creating the first helper thread failed.
+
 2018-10-23  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
        [BZ #23709]
diff --git a/NEWS b/NEWS
index c1102a152fab18beaf22ffe7801bdb58167e3325..5fef60bc0f02ad87cb34698b51ffc9b87ee43f57 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -65,6 +65,7 @@ The following bugs are resolved with this release:
   [22918] multiple common of `__nss_shadow_database'
   [22919] sparc32: backtrace yields infinite backtrace with makecontext
   [22926] FTBFS on powerpcspe
+  [22927] libanl: properly cleanup if first helper thread creation failed
   [22932] lt_LT: Update of abbreviated month names from CLDR required
   [22937] Greek (el_GR, el_CY) locales actually need ab_alt_mon
   [22947] FAIL: misc/tst-preadvwritev2
index e7c3b63cc5725b4fc98cef4902f00d9a8228516a..80a2cff8353fcb6cade44431cefcbdf8805cf35b 100644 (file)
@@ -261,8 +261,11 @@ __gai_enqueue_request (struct gaicb *gaicbp)
              /* We cannot create a thread in the moment and there is
                 also no thread running.  This is a problem.  `errno' is
                 set to EAGAIN if this is only a temporary problem.  */
-             assert (lastp->next == newp);
-             lastp->next = NULL;
+             assert (requests == newp || lastp->next == newp);
+             if (lastp != NULL)
+               lastp->next = NULL;
+             else
+               requests = NULL;
              requests_tail = lastp;
 
              newp->next = freelist;