Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-24 Thread Burton, Ross
Yes, please.

Ross

On 24 November 2017 at 04:32, Zhixiong Chi 
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  wrote:
>
>> On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross 
>> 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>
>
>
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-23 Thread Zhixiong Chi

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 > wrote:


On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross
> 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

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-23 Thread Burton, Ross
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  wrote:

> On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross 
> 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).
>
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-21 Thread Andre McCurdy
On Tue, Nov 21, 2017 at 3:05 PM, Burton, Ross  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).
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-21 Thread Burton, Ross
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 
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 
> ---
>  ...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 000..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 
> +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 
> +
> +Index: git/malloc/Makefile
> +===
> +--- git.orig/malloc/Makefile   2017-09-04 17:34:06.758018978 +0800
>  git/malloc/Makefile2017-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.c2017-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 != _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 != _arena)
> +   {
> +-heap_info *heap = heap_for_ptr (top (ar_ptr));
> + fprintf (fp,
> +  "\n"
> +  "\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.0 +
>  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
> ++   .  */
> ++
> ++/* The purpose of this test is to provide a quick way to run
> ++   malloc_info in a multi-threaded process.  */
> ++
> ++#include 
> ++#include 
> ++#include 
> ++#include 
> ++#include 
> ++
> ++/* This barrier is used to have the main thread wait until the 

Re: [OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-20 Thread Khem Raj
On Sun, Nov 19, 2017 at 11:44 PM, Zhixiong Chi
 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 
> ---
>  ...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 000..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 
> +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 
> +
> +Index: git/malloc/Makefile
> +===
> +--- git.orig/malloc/Makefile   2017-09-04 17:34:06.758018978 +0800
>  git/malloc/Makefile2017-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.c2017-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 != _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 != _arena)
> +   {
> +-heap_info *heap = heap_for_ptr (top (ar_ptr));
> + fprintf (fp,
> +  "\n"
> +  "\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.0 +
>  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
> ++   .  */
> ++
> ++/* The purpose of this test is to provide a quick way to run
> ++   malloc_info in a multi-threaded process.  */
> ++
> ++#include 
> ++#include 
> ++#include 
> ++#include 
> ++#include 
> ++
> ++/* This barrier is used to have the main thread wait until the helper
> ++   threads have performed their allocations.  */
> ++static pthread_barrier_t barrier;
> ++
> 

[OE-core] [PATCH] glibc: malloc: Add missing arena lock in malloc_info

2017-11-19 Thread Zhixiong Chi
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 
---
 ...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 000..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 
+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 
+
+Index: git/malloc/Makefile
+===
+--- git.orig/malloc/Makefile   2017-09-04 17:34:06.758018978 +0800
 git/malloc/Makefile2017-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.c2017-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 != _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 != _arena)
+   {
+-heap_info *heap = heap_for_ptr (top (ar_ptr));
+ fprintf (fp,
+  "\n"
+  "\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.0 +
 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
++   .  */
++
++/* The purpose of this test is to provide a quick way to run
++   malloc_info in a multi-threaded process.  */
++
++#include 
++#include 
++#include 
++#include 
++#include 
++
++/* 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,
++  };
++