* [PATCH] glibc: malloc: Add missing arena lock in malloc_info
@ 2017-11-20 7:44 Zhixiong Chi
2017-11-21 5:52 ` Khem Raj
2017-11-21 23:05 ` Burton, Ross
0 siblings, 2 replies; 7+ messages in thread
From: Zhixiong Chi @ 2017-11-20 7:44 UTC (permalink / raw)
To: openembedded-core
There are the multiple process crashes seen while using malloc_info.
Obtain the size information while the arena lock is acquired, and only
print it later.
Backport patch from https://sourceware.org/git/gitweb.cgi?p=glibc.git;
h=7a9368a1174cb15b9f1d6342e0e10dd90dae238d
Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
---
...loc-add-missing-arena-lock-in-malloc-info.patch | 172 +++++++++++++++++++++
meta/recipes-core/glibc/glibc_2.26.bb | 1 +
2 files changed, 173 insertions(+)
create mode 100644 meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
diff --git a/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch b/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
new file mode 100644
index 0000000..e12400d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
@@ -0,0 +1,172 @@
+From: Florian Weimer <fweimer@redhat.com>
+Date: Wed, 15 Nov 2017 11:39:01 +0100
+Subject: [PATCH] malloc: Add missing arena lock in malloc_info [BZ #22408]
+
+Obtain the size information while the arena lock is acquired, and only
+print it later.
+
+Upstream-Status: Backport
+
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+
+Index: git/malloc/Makefile
+===================================================================
+--- git.orig/malloc/Makefile 2017-09-04 17:34:06.758018978 +0800
++++ git/malloc/Makefile 2017-11-20 14:57:43.440337572 +0800
+@@ -34,6 +34,7 @@
+ tst-interpose-nothread \
+ tst-interpose-thread \
+ tst-alloc_buffer \
++ tst-malloc_info \
+
+ tests-static := \
+ tst-interpose-static-nothread \
+@@ -242,3 +243,5 @@
+ $(objpfx)tst-dynarray-fail-mem.out: $(objpfx)tst-dynarray-fail.out
+ $(common-objpfx)malloc/mtrace $(objpfx)tst-dynarray-fail.mtrace > $@; \
+ $(evaluate-test)
++
++$(objpfx)tst-malloc_info: $(shared-thread-library)
+Index: git/malloc/malloc.c
+===================================================================
+--- git.orig/malloc/malloc.c 2017-09-04 17:34:06.758018978 +0800
++++ git/malloc/malloc.c 2017-11-20 15:01:02.412338959 +0800
+@@ -5547,6 +5547,15 @@
+ avail += sizes[NFASTBINS - 1 + i].total;
+ }
+
++ size_t heap_size = 0;
++ size_t heap_mprotect_size = 0;
++ if (ar_ptr != &main_arena)
++ {
++ heap_info *heap = heap_for_ptr (top (ar_ptr));
++ heap_size = heap->size;
++ heap_mprotect_size = heap->mprotect_size;
++ }
++
+ __libc_lock_unlock (ar_ptr->mutex);
+
+ total_nfastblocks += nfastblocks;
+@@ -5580,13 +5589,12 @@
+
+ if (ar_ptr != &main_arena)
+ {
+- heap_info *heap = heap_for_ptr (top (ar_ptr));
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+- heap->size, heap->mprotect_size);
+- total_aspace += heap->size;
+- total_aspace_mprotect += heap->mprotect_size;
++ heap_size, heap_mprotect_size);
++ total_aspace += heap_size;
++ total_aspace_mprotect += heap_mprotect_size;
+ }
+ else
+ {
+Index: git/malloc/tst-malloc_info.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/malloc/tst-malloc_info.c 2017-11-20 15:02:03.208339383 +0800
+@@ -0,0 +1,101 @@
++/* Smoke test for malloc_info.
++ Copyright (C) 2017 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/>. */
++
++/* The purpose of this test is to provide a quick way to run
++ malloc_info in a multi-threaded process. */
++
++#include <array_length.h>
++#include <malloc.h>
++#include <stdlib.h>
++#include <support/support.h>
++#include <support/xthread.h>
++
++/* This barrier is used to have the main thread wait until the helper
++ threads have performed their allocations. */
++static pthread_barrier_t barrier;
++
++enum
++ {
++ /* Number of threads performing allocations. */
++ thread_count = 4,
++
++ /* Amount of memory allocation per thread. This should be large
++ enough to cause the allocation of multiple heaps per arena. */
++ per_thread_allocations
++ = sizeof (void *) == 4 ? 16 * 1024 * 1024 : 128 * 1024 * 1024,
++ };
++
++static void *
++allocation_thread_function (void *closure)
++{
++ struct list
++ {
++ struct list *next;
++ long dummy[4];
++ };
++
++ struct list *head = NULL;
++ size_t allocated = 0;
++ while (allocated < per_thread_allocations)
++ {
++ struct list *new_head = xmalloc (sizeof (*new_head));
++ allocated += sizeof (*new_head);
++ new_head->next = head;
++ head = new_head;
++ }
++
++ xpthread_barrier_wait (&barrier);
++
++ /* Main thread prints first statistics here. */
++
++ xpthread_barrier_wait (&barrier);
++
++ while (head != NULL)
++ {
++ struct list *next_head = head->next;
++ free (head);
++ head = next_head;
++ }
++
++ return NULL;
++}
++
++static int
++do_test (void)
++{
++ xpthread_barrier_init (&barrier, NULL, thread_count + 1);
++
++ pthread_t threads[thread_count];
++ for (size_t i = 0; i < array_length (threads); ++i)
++ threads[i] = xpthread_create (NULL, allocation_thread_function, NULL);
++
++ xpthread_barrier_wait (&barrier);
++ puts ("info: After allocation:");
++ malloc_info (0, stdout);
++
++ xpthread_barrier_wait (&barrier);
++ for (size_t i = 0; i < array_length (threads); ++i)
++ xpthread_join (threads[i]);
++
++ puts ("\ninfo: After deallocation:");
++ malloc_info (0, stdout);
++
++ return 0;
++}
++
++#include <support/test-driver.c>
diff --git a/meta/recipes-core/glibc/glibc_2.26.bb b/meta/recipes-core/glibc/glibc_2.26.bb
index 135ec4f..05d1e2c 100644
--- a/meta/recipes-core/glibc/glibc_2.26.bb
+++ b/meta/recipes-core/glibc/glibc_2.26.bb
@@ -43,6 +43,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://0026-assert-Suppress-pedantic-warning-caused-by-statement.patch \
file://0027-glibc-reset-dl-load-write-lock-after-forking.patch \
file://0028-Bug-4578-add-ld.so-lock-while-fork.patch \
+ file://0029-malloc-add-missing-arena-lock-in-malloc-info.patch \
"
NATIVESDKFIXES ?= ""
--
1.9.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-20 7:44 [PATCH] glibc: malloc: Add missing arena lock in malloc_info Zhixiong Chi
@ 2017-11-21 5:52 ` Khem Raj
2017-11-21 23:05 ` Burton, Ross
1 sibling, 0 replies; 7+ messages in thread
From: Khem Raj @ 2017-11-21 5:52 UTC (permalink / raw)
To: Zhixiong Chi; +Cc: Patches and discussions about the oe-core layer
On Sun, Nov 19, 2017 at 11:44 PM, Zhixiong Chi
<zhixiong.chi@windriver.com> wrote:
> There are the multiple process crashes seen while using malloc_info.
> Obtain the size information while the arena lock is acquired, and only
> print it later.
>
> Backport patch from https://sourceware.org/git/gitweb.cgi?p=glibc.git;
> h=7a9368a1174cb15b9f1d6342e0e10dd90dae238d
>
this is fine
> Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
> ---
> ...loc-add-missing-arena-lock-in-malloc-info.patch | 172 +++++++++++++++++++++
> meta/recipes-core/glibc/glibc_2.26.bb | 1 +
> 2 files changed, 173 insertions(+)
> create mode 100644 meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
>
> diff --git a/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch b/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
> new file mode 100644
> index 0000000..e12400d
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
> @@ -0,0 +1,172 @@
> +From: Florian Weimer <fweimer@redhat.com>
> +Date: Wed, 15 Nov 2017 11:39:01 +0100
> +Subject: [PATCH] malloc: Add missing arena lock in malloc_info [BZ #22408]
> +
> +Obtain the size information while the arena lock is acquired, and only
> +print it later.
> +
> +Upstream-Status: Backport
> +
> +Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
> +
> +Index: git/malloc/Makefile
> +===================================================================
> +--- git.orig/malloc/Makefile 2017-09-04 17:34:06.758018978 +0800
> ++++ git/malloc/Makefile 2017-11-20 14:57:43.440337572 +0800
> +@@ -34,6 +34,7 @@
> + tst-interpose-nothread \
> + tst-interpose-thread \
> + tst-alloc_buffer \
> ++ tst-malloc_info \
> +
> + tests-static := \
> + tst-interpose-static-nothread \
> +@@ -242,3 +243,5 @@
> + $(objpfx)tst-dynarray-fail-mem.out: $(objpfx)tst-dynarray-fail.out
> + $(common-objpfx)malloc/mtrace $(objpfx)tst-dynarray-fail.mtrace > $@; \
> + $(evaluate-test)
> ++
> ++$(objpfx)tst-malloc_info: $(shared-thread-library)
> +Index: git/malloc/malloc.c
> +===================================================================
> +--- git.orig/malloc/malloc.c 2017-09-04 17:34:06.758018978 +0800
> ++++ git/malloc/malloc.c 2017-11-20 15:01:02.412338959 +0800
> +@@ -5547,6 +5547,15 @@
> + avail += sizes[NFASTBINS - 1 + i].total;
> + }
> +
> ++ size_t heap_size = 0;
> ++ size_t heap_mprotect_size = 0;
> ++ if (ar_ptr != &main_arena)
> ++ {
> ++ heap_info *heap = heap_for_ptr (top (ar_ptr));
> ++ heap_size = heap->size;
> ++ heap_mprotect_size = heap->mprotect_size;
> ++ }
> ++
> + __libc_lock_unlock (ar_ptr->mutex);
> +
> + total_nfastblocks += nfastblocks;
> +@@ -5580,13 +5589,12 @@
> +
> + if (ar_ptr != &main_arena)
> + {
> +- heap_info *heap = heap_for_ptr (top (ar_ptr));
> + fprintf (fp,
> + "<aspace type=\"total\" size=\"%zu\"/>\n"
> + "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
> +- heap->size, heap->mprotect_size);
> +- total_aspace += heap->size;
> +- total_aspace_mprotect += heap->mprotect_size;
> ++ heap_size, heap_mprotect_size);
> ++ total_aspace += heap_size;
> ++ total_aspace_mprotect += heap_mprotect_size;
> + }
> + else
> + {
> +Index: git/malloc/tst-malloc_info.c
> +===================================================================
> +--- /dev/null 1970-01-01 00:00:00.000000000 +0000
> ++++ git/malloc/tst-malloc_info.c 2017-11-20 15:02:03.208339383 +0800
> +@@ -0,0 +1,101 @@
> ++/* Smoke test for malloc_info.
> ++ Copyright (C) 2017 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/>. */
> ++
> ++/* The purpose of this test is to provide a quick way to run
> ++ malloc_info in a multi-threaded process. */
> ++
> ++#include <array_length.h>
> ++#include <malloc.h>
> ++#include <stdlib.h>
> ++#include <support/support.h>
> ++#include <support/xthread.h>
> ++
> ++/* This barrier is used to have the main thread wait until the helper
> ++ threads have performed their allocations. */
> ++static pthread_barrier_t barrier;
> ++
> ++enum
> ++ {
> ++ /* Number of threads performing allocations. */
> ++ thread_count = 4,
> ++
> ++ /* Amount of memory allocation per thread. This should be large
> ++ enough to cause the allocation of multiple heaps per arena. */
> ++ per_thread_allocations
> ++ = sizeof (void *) == 4 ? 16 * 1024 * 1024 : 128 * 1024 * 1024,
> ++ };
> ++
> ++static void *
> ++allocation_thread_function (void *closure)
> ++{
> ++ struct list
> ++ {
> ++ struct list *next;
> ++ long dummy[4];
> ++ };
> ++
> ++ struct list *head = NULL;
> ++ size_t allocated = 0;
> ++ while (allocated < per_thread_allocations)
> ++ {
> ++ struct list *new_head = xmalloc (sizeof (*new_head));
> ++ allocated += sizeof (*new_head);
> ++ new_head->next = head;
> ++ head = new_head;
> ++ }
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++
> ++ /* Main thread prints first statistics here. */
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++
> ++ while (head != NULL)
> ++ {
> ++ struct list *next_head = head->next;
> ++ free (head);
> ++ head = next_head;
> ++ }
> ++
> ++ return NULL;
> ++}
> ++
> ++static int
> ++do_test (void)
> ++{
> ++ xpthread_barrier_init (&barrier, NULL, thread_count + 1);
> ++
> ++ pthread_t threads[thread_count];
> ++ for (size_t i = 0; i < array_length (threads); ++i)
> ++ threads[i] = xpthread_create (NULL, allocation_thread_function, NULL);
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++ puts ("info: After allocation:");
> ++ malloc_info (0, stdout);
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++ for (size_t i = 0; i < array_length (threads); ++i)
> ++ xpthread_join (threads[i]);
> ++
> ++ puts ("\ninfo: After deallocation:");
> ++ malloc_info (0, stdout);
> ++
> ++ return 0;
> ++}
> ++
> ++#include <support/test-driver.c>
> diff --git a/meta/recipes-core/glibc/glibc_2.26.bb b/meta/recipes-core/glibc/glibc_2.26.bb
> index 135ec4f..05d1e2c 100644
> --- a/meta/recipes-core/glibc/glibc_2.26.bb
> +++ b/meta/recipes-core/glibc/glibc_2.26.bb
> @@ -43,6 +43,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
> file://0026-assert-Suppress-pedantic-warning-caused-by-statement.patch \
> file://0027-glibc-reset-dl-load-write-lock-after-forking.patch \
> file://0028-Bug-4578-add-ld.so-lock-while-fork.patch \
> + file://0029-malloc-add-missing-arena-lock-in-malloc-info.patch \
> "
>
> NATIVESDKFIXES ?= ""
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-20 7:44 [PATCH] glibc: malloc: Add missing arena lock in malloc_info Zhixiong Chi
2017-11-21 5:52 ` Khem Raj
@ 2017-11-21 23:05 ` Burton, Ross
2017-11-22 0:50 ` Andre McCurdy
1 sibling, 1 reply; 7+ messages in thread
From: Burton, Ross @ 2017-11-21 23:05 UTC (permalink / raw)
To: Zhixiong Chi; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 8218 bytes --]
What glibc release is this in? We've an upgrade patch pending that bumps
it to 77f921dac17c5fa99bd9e926d926c327982895f7.
Ross
On 20 November 2017 at 07:44, Zhixiong Chi <zhixiong.chi@windriver.com>
wrote:
> There are the multiple process crashes seen while using malloc_info.
> Obtain the size information while the arena lock is acquired, and only
> print it later.
>
> Backport patch from https://sourceware.org/git/gitweb.cgi?p=glibc.git;
> h=7a9368a1174cb15b9f1d6342e0e10dd90dae238d
>
> Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
> ---
> ...loc-add-missing-arena-lock-in-malloc-info.patch | 172
> +++++++++++++++++++++
> meta/recipes-core/glibc/glibc_2.26.bb | 1 +
> 2 files changed, 173 insertions(+)
> create mode 100644 meta/recipes-core/glibc/glibc/
> 0029-malloc-add-missing-arena-lock-in-malloc-info.patch
>
> diff --git a/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-
> arena-lock-in-malloc-info.patch b/meta/recipes-core/glibc/
> glibc/0029-malloc-add-missing-arena-lock-in-malloc-info.patch
> new file mode 100644
> index 0000000..e12400d
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc/0029-malloc-add-missing-
> arena-lock-in-malloc-info.patch
> @@ -0,0 +1,172 @@
> +From: Florian Weimer <fweimer@redhat.com>
> +Date: Wed, 15 Nov 2017 11:39:01 +0100
> +Subject: [PATCH] malloc: Add missing arena lock in malloc_info [BZ #22408]
> +
> +Obtain the size information while the arena lock is acquired, and only
> +print it later.
> +
> +Upstream-Status: Backport
> +
> +Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
> +
> +Index: git/malloc/Makefile
> +===================================================================
> +--- git.orig/malloc/Makefile 2017-09-04 17:34:06.758018978 +0800
> ++++ git/malloc/Makefile 2017-11-20 14:57:43.440337572 +0800
> +@@ -34,6 +34,7 @@
> + tst-interpose-nothread \
> + tst-interpose-thread \
> + tst-alloc_buffer \
> ++ tst-malloc_info \
> +
> + tests-static := \
> + tst-interpose-static-nothread \
> +@@ -242,3 +243,5 @@
> + $(objpfx)tst-dynarray-fail-mem.out: $(objpfx)tst-dynarray-fail.out
> + $(common-objpfx)malloc/mtrace $(objpfx)tst-dynarray-fail.mtrace >
> $@; \
> + $(evaluate-test)
> ++
> ++$(objpfx)tst-malloc_info: $(shared-thread-library)
> +Index: git/malloc/malloc.c
> +===================================================================
> +--- git.orig/malloc/malloc.c 2017-09-04 17:34:06.758018978 +0800
> ++++ git/malloc/malloc.c 2017-11-20 15:01:02.412338959 +0800
> +@@ -5547,6 +5547,15 @@
> + avail += sizes[NFASTBINS - 1 + i].total;
> + }
> +
> ++ size_t heap_size = 0;
> ++ size_t heap_mprotect_size = 0;
> ++ if (ar_ptr != &main_arena)
> ++ {
> ++ heap_info *heap = heap_for_ptr (top (ar_ptr));
> ++ heap_size = heap->size;
> ++ heap_mprotect_size = heap->mprotect_size;
> ++ }
> ++
> + __libc_lock_unlock (ar_ptr->mutex);
> +
> + total_nfastblocks += nfastblocks;
> +@@ -5580,13 +5589,12 @@
> +
> + if (ar_ptr != &main_arena)
> + {
> +- heap_info *heap = heap_for_ptr (top (ar_ptr));
> + fprintf (fp,
> + "<aspace type=\"total\" size=\"%zu\"/>\n"
> + "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
> +- heap->size, heap->mprotect_size);
> +- total_aspace += heap->size;
> +- total_aspace_mprotect += heap->mprotect_size;
> ++ heap_size, heap_mprotect_size);
> ++ total_aspace += heap_size;
> ++ total_aspace_mprotect += heap_mprotect_size;
> + }
> + else
> + {
> +Index: git/malloc/tst-malloc_info.c
> +===================================================================
> +--- /dev/null 1970-01-01 00:00:00.000000000 +0000
> ++++ git/malloc/tst-malloc_info.c 2017-11-20 15:02:03.208339383 +0800
> +@@ -0,0 +1,101 @@
> ++/* Smoke test for malloc_info.
> ++ Copyright (C) 2017 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/>. */
> ++
> ++/* The purpose of this test is to provide a quick way to run
> ++ malloc_info in a multi-threaded process. */
> ++
> ++#include <array_length.h>
> ++#include <malloc.h>
> ++#include <stdlib.h>
> ++#include <support/support.h>
> ++#include <support/xthread.h>
> ++
> ++/* This barrier is used to have the main thread wait until the helper
> ++ threads have performed their allocations. */
> ++static pthread_barrier_t barrier;
> ++
> ++enum
> ++ {
> ++ /* Number of threads performing allocations. */
> ++ thread_count = 4,
> ++
> ++ /* Amount of memory allocation per thread. This should be large
> ++ enough to cause the allocation of multiple heaps per arena. */
> ++ per_thread_allocations
> ++ = sizeof (void *) == 4 ? 16 * 1024 * 1024 : 128 * 1024 * 1024,
> ++ };
> ++
> ++static void *
> ++allocation_thread_function (void *closure)
> ++{
> ++ struct list
> ++ {
> ++ struct list *next;
> ++ long dummy[4];
> ++ };
> ++
> ++ struct list *head = NULL;
> ++ size_t allocated = 0;
> ++ while (allocated < per_thread_allocations)
> ++ {
> ++ struct list *new_head = xmalloc (sizeof (*new_head));
> ++ allocated += sizeof (*new_head);
> ++ new_head->next = head;
> ++ head = new_head;
> ++ }
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++
> ++ /* Main thread prints first statistics here. */
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++
> ++ while (head != NULL)
> ++ {
> ++ struct list *next_head = head->next;
> ++ free (head);
> ++ head = next_head;
> ++ }
> ++
> ++ return NULL;
> ++}
> ++
> ++static int
> ++do_test (void)
> ++{
> ++ xpthread_barrier_init (&barrier, NULL, thread_count + 1);
> ++
> ++ pthread_t threads[thread_count];
> ++ for (size_t i = 0; i < array_length (threads); ++i)
> ++ threads[i] = xpthread_create (NULL, allocation_thread_function,
> NULL);
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++ puts ("info: After allocation:");
> ++ malloc_info (0, stdout);
> ++
> ++ xpthread_barrier_wait (&barrier);
> ++ for (size_t i = 0; i < array_length (threads); ++i)
> ++ xpthread_join (threads[i]);
> ++
> ++ puts ("\ninfo: After deallocation:");
> ++ malloc_info (0, stdout);
> ++
> ++ return 0;
> ++}
> ++
> ++#include <support/test-driver.c>
> diff --git a/meta/recipes-core/glibc/glibc_2.26.bb
> b/meta/recipes-core/glibc/glibc_2.26.bb
> index 135ec4f..05d1e2c 100644
> --- a/meta/recipes-core/glibc/glibc_2.26.bb
> +++ b/meta/recipes-core/glibc/glibc_2.26.bb
> @@ -43,6 +43,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc
> \
> file://0026-assert-Suppress-pedantic-warning-caused-by-statement.patch
> \
> file://0027-glibc-reset-dl-load-write-lock-after-forking.patch
> \
> file://0028-Bug-4578-add-ld.so-lock-while-fork.patch \
> + file://0029-malloc-add-missing-arena-lock-in-malloc-info.patch
> \
> "
>
> NATIVESDKFIXES ?= ""
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
[-- Attachment #2: Type: text/html, Size: 10575 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-21 23:05 ` Burton, Ross
@ 2017-11-22 0:50 ` Andre McCurdy
2017-11-23 11:58 ` Burton, Ross
0 siblings, 1 reply; 7+ messages in thread
From: Andre McCurdy @ 2017-11-22 0:50 UTC (permalink / raw)
To: Burton, Ross; +Cc: OE-core
On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross <ross.burton@intel.com> wrote:
> What glibc release is this in? We've an upgrade patch pending that bumps it
> to 77f921dac17c5fa99bd9e926d926c327982895f7.
It's currently in the glibc master branch only (ie hasn't been
backported to the 2.26 release branch).
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-22 0:50 ` Andre McCurdy
@ 2017-11-23 11:58 ` Burton, Ross
2017-11-24 4:32 ` Zhixiong Chi
0 siblings, 1 reply; 7+ messages in thread
From: Burton, Ross @ 2017-11-23 11:58 UTC (permalink / raw)
To: Zhixiong Chi; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 597 bytes --]
Thanks Andre. There's a glibc 2.26 upgrade pending and this doesn't apply
on top of that, can you rebase? poky-contrib:ross/mut2 is where I'm
staging the toolchain updates.
Ross
On 22 November 2017 at 00:50, Andre McCurdy <armccurdy@gmail.com> wrote:
> On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross <ross.burton@intel.com>
> wrote:
> > What glibc release is this in? We've an upgrade patch pending that
> bumps it
> > to 77f921dac17c5fa99bd9e926d926c327982895f7.
>
> It's currently in the glibc master branch only (ie hasn't been
> backported to the 2.26 release branch).
>
[-- Attachment #2: Type: text/html, Size: 1020 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-23 11:58 ` Burton, Ross
@ 2017-11-24 4:32 ` Zhixiong Chi
2017-11-24 15:29 ` Burton, Ross
0 siblings, 1 reply; 7+ messages in thread
From: Zhixiong Chi @ 2017-11-24 4:32 UTC (permalink / raw)
To: Burton, Ross; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 945 bytes --]
Hi Ross,
Is your meaning that I regenerate this patch based on
poky-contrib:ross/mut2 branch?
Thanks.
On 2017年11月23日 19:58, Burton, Ross wrote:
> Thanks Andre. There's a glibc 2.26 upgrade pending and this doesn't
> apply on top of that, can you rebase? poky-contrib:ross/mut2 is where
> I'm staging the toolchain updates.
>
> Ross
>
> On 22 November 2017 at 00:50, Andre McCurdy <armccurdy@gmail.com
> <mailto:armccurdy@gmail.com>> wrote:
>
> On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross
> <ross.burton@intel.com <mailto:ross.burton@intel.com>> wrote:
> > What glibc release is this in? We've an upgrade patch pending
> that bumps it
> > to 77f921dac17c5fa99bd9e926d926c327982895f7.
>
> It's currently in the glibc master branch only (ie hasn't been
> backported to the 2.26 release branch).
>
>
--
---------------------
Thanks,
Zhixiong Chi
Tel: +86-10-8477-7036
[-- Attachment #2: Type: text/html, Size: 2154 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] glibc: malloc: Add missing arena lock in malloc_info
2017-11-24 4:32 ` Zhixiong Chi
@ 2017-11-24 15:29 ` Burton, Ross
0 siblings, 0 replies; 7+ messages in thread
From: Burton, Ross @ 2017-11-24 15:29 UTC (permalink / raw)
To: Zhixiong Chi; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 1023 bytes --]
Yes, please.
Ross
On 24 November 2017 at 04:32, Zhixiong Chi <zhixiong.chi@windriver.com>
wrote:
> Hi Ross,
> Is your meaning that I regenerate this patch based on
> poky-contrib:ross/mut2 branch?
>
> Thanks.
>
>
> On 2017年11月23日 19:58, Burton, Ross wrote:
>
> Thanks Andre. There's a glibc 2.26 upgrade pending and this doesn't apply
> on top of that, can you rebase? poky-contrib:ross/mut2 is where I'm
> staging the toolchain updates.
>
> Ross
>
> On 22 November 2017 at 00:50, Andre McCurdy <armccurdy@gmail.com> wrote:
>
>> On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross <ross.burton@intel.com>
>> wrote:
>> > What glibc release is this in? We've an upgrade patch pending that
>> bumps it
>> > to 77f921dac17c5fa99bd9e926d926c327982895f7.
>>
>> It's currently in the glibc master branch only (ie hasn't been
>> backported to the 2.26 release branch).
>>
>
>
> --
> ---------------------
> Thanks,
> Zhixiong Chi
> Tel: +86-10-8477-7036 <+86%2010%208477%207036>
>
>
[-- Attachment #2: Type: text/html, Size: 2469 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-11-24 15:29 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-20 7:44 [PATCH] glibc: malloc: Add missing arena lock in malloc_info Zhixiong Chi
2017-11-21 5:52 ` Khem Raj
2017-11-21 23:05 ` Burton, Ross
2017-11-22 0:50 ` Andre McCurdy
2017-11-23 11:58 ` Burton, Ross
2017-11-24 4:32 ` Zhixiong Chi
2017-11-24 15:29 ` Burton, Ross
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox