This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: thread heap leak?
- From: David Muse <david dot muse at firstworks dot com>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: "Carlos O'Donell" <codonell at redhat dot com>, Florian Weimer <fw at deneb dot enyo dot de>, libc-alpha at sourceware dot org
- Date: Thu, 18 Apr 2019 09:36:47 -0400
- Subject: Re: thread heap leak?
- References: <20190322105304.1e848cefb45fb65d32a96b23@firstworks.com> <77992b67-3fdf-cad7-8ad8-0e27b9353791@redhat.com> <20190322133932.b5b9b2af28ec5941af810f21@firstworks.com> <6ff37227-4b52-25c5-d890-02b4becb2ae8@redhat.com> <20190325113758.73e9324a19727503d82d2d4c@firstworks.com> <20190330130635.c9e52acd94c8248c20709e92@firstworks.com> <c920f08b-85c6-6bd3-5ca4-7c9bebee3a99@redhat.com> <20190331231847.4e46776b2625e1d436607cbb@firstworks.com> <mvmh8biqgra.fsf@suse.de>
On Mon, 01 Apr 2019 10:19:53 +0200
Andreas Schwab <schwab@suse.de> wrote:
> On Mär 31 2019, David Muse <david.muse@firstworks.com> wrote:
>
> > Yeah, that is what it looks like, but where did the 3rd thread stack come from? As far as I can tell, no thread created it.
>
> Try using `strace -k -e mmap' to see where the mapping is created.
>
> Andreas.
>
> --
> Andreas Schwab, SUSE Labs, schwab@suse.de
> GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
> "And now for something completely different."
>
Thanks for the strace tip Andreas. I built strace-5.0 with --enable-stacktrace=yes --with-libunwind, and I get the following mmap calls when I use it:
(numbered by me)
1 - mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac55d978000
2 - mmap(0x2ac55e050000, 13472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ac55e050000
3 - mmap(0x2ac55e25e000, 184832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ac55e25e000
4 - mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac55d97a000
5 - mmap(0x2ac55eadc000, 12320, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ac55eadc000
6 - mmap(0x2ac55f426000, 14336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ac55f426000
7 - mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac55d97c000
8 - mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac55d97e000
9 - mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac55d980000
10 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac55f42a000
11 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac55f62b000
12 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac55f82c000
13 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac55fa2d000
14 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac55fc2e000
15 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574000000
16 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574201000
17 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574402000
18 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574603000
19 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574804000
20 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574a05000
21 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574c06000
22 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac574e07000
23 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac575008000
24 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac575209000
25 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac57540a000
26 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac57560b000
27 - mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x2ac57580c000
I can correlate call number 6 and calls numbered 10-27 with the process map. Presumedly, 1-5 and 7-9 were unmapped. 10-27 appear to be thread stacks, considering their size, and that they were called with the MAP_STACK option :)
2ac55f426000-2ac55f42a000 rw-p 00000000 00:00 0 - 6
2ac55f42a000-2ac55f42b000 ---p 00000000 00:00 0 - 10
2ac55f42b000-2ac55f62b000 rw-p 00000000 00:00 0
2ac55f62b000-2ac55f62c000 ---p 00000000 00:00 0 - 11
2ac55f62c000-2ac55f82c000 rw-p 00000000 00:00 0
2ac55f82c000-2ac55f82d000 ---p 00000000 00:00 0 - 12
2ac55f82d000-2ac55fa2d000 rw-p 00000000 00:00 0
2ac55fa2d000-2ac55fa2e000 ---p 00000000 00:00 0 - 13
2ac55fa2e000-2ac55fc2e000 rw-p 00000000 00:00 0
2ac55fc2e000-2ac55fc2f000 ---p 00000000 00:00 0 - 14
2ac55fc2f000-2ac55fe2f000 rw-p 00000000 00:00 0
2ac560000000-2ac56002b000 rw-p 00000000 00:00 0
2ac56002b000-2ac564000000 ---p 00000000 00:00 0
2ac564000000-2ac564021000 rw-p 00000000 00:00 0
2ac564021000-2ac568000000 ---p 00000000 00:00 0
2ac568000000-2ac56807f000 rw-p 00000000 00:00 0
2ac56807f000-2ac56c000000 ---p 00000000 00:00 0
2ac56c000000-2ac56c021000 rw-p 00000000 00:00 0
2ac56c021000-2ac570000000 ---p 00000000 00:00 0
2ac570000000-2ac570021000 rw-p 00000000 00:00 0
2ac570021000-2ac574000000 ---p 00000000 00:00 0
2ac574000000-2ac574001000 ---p 00000000 00:00 0 - 15
2ac574001000-2ac574201000 rw-p 00000000 00:00 0
2ac574201000-2ac574202000 ---p 00000000 00:00 0 - 16
2ac574202000-2ac574402000 rw-p 00000000 00:00 0
2ac574402000-2ac574403000 ---p 00000000 00:00 0 - 17
2ac574403000-2ac574603000 rw-p 00000000 00:00 0
2ac574603000-2ac574604000 ---p 00000000 00:00 0 - 18
2ac574604000-2ac574804000 rw-p 00000000 00:00 0
2ac574804000-2ac574805000 ---p 00000000 00:00 0 - 19
2ac574805000-2ac574a05000 rw-p 00000000 00:00 0
2ac574a05000-2ac574a06000 ---p 00000000 00:00 0 - 20
2ac574a06000-2ac574c06000 rw-p 00000000 00:00 0
2ac574c06000-2ac574c07000 ---p 00000000 00:00 0 - 21
2ac574c07000-2ac574e07000 rw-p 00000000 00:00 0
2ac574e07000-2ac574e08000 ---p 00000000 00:00 0 - 22
2ac574e08000-2ac575008000 rw-p 00000000 00:00 0
2ac575008000-2ac575009000 ---p 00000000 00:00 0 - 23
2ac575009000-2ac575209000 rw-p 00000000 00:00 0
2ac575209000-2ac57520a000 ---p 00000000 00:00 0 - 24
2ac57520a000-2ac57540a000 rw-p 00000000 00:00 0
2ac57540a000-2ac57540b000 ---p 00000000 00:00 0 - 25
2ac57540b000-2ac57560b000 rw-p 00000000 00:00 0
2ac57560b000-2ac57560c000 ---p 00000000 00:00 0 - 26
2ac57560c000-2ac57580c000 rw-p 00000000 00:00 0
2ac57580c000-2ac57580d000 ---p 00000000 00:00 0 - 27
2ac57580d000-2ac575a0d000 rw-p 00000000 00:00 0
2ac578000000-2ac5780a6000 rw-p 00000000 00:00 0
2ac5780a6000-2ac57c000000 ---p 00000000 00:00 0
2ac57c000000-2ac57c098000 rw-p 00000000 00:00 0
2ac57c098000-2ac580000000 ---p 00000000 00:00 0
2ac580000000-2ac5800a6000 rw-p 00000000 00:00 0
2ac5800a6000-2ac584000000 ---p 00000000 00:00 0
2ac584000000-2ac584037000 rw-p 00000000 00:00 0
2ac584037000-2ac588000000 ---p 00000000 00:00 0
2ac588000000-2ac58802a000 rw-p 00000000 00:00 0
2ac58802a000-2ac58c000000 ---p 00000000 00:00 0
2ac58c000000-2ac58c098000 rw-p 00000000 00:00 0
2ac58c098000-2ac590000000 ---p 00000000 00:00 0
2ac590000000-2ac5900e9000 rw-p 00000000 00:00 0
2ac5900e9000-2ac594000000 ---p 00000000 00:00 0
2ac594000000-2ac594084000 rw-p 00000000 00:00 0
2ac594084000-2ac598000000 ---p 00000000 00:00 0
2ac598000000-2ac598098000 rw-p 00000000 00:00 0
2ac598098000-2ac59c000000 ---p 00000000 00:00 0
2ac59c000000-2ac59c0a5000 rw-p 00000000 00:00 0
2ac59c0a5000-2ac5a0000000 ---p 00000000 00:00 0
2ac5a0000000-2ac5a0021000 rw-p 00000000 00:00 0
2ac5a0021000-2ac5a4000000 ---p 00000000 00:00 0
2ac5a4000000-2ac5a40a2000 rw-p 00000000 00:00 0
2ac5a40a2000-2ac5a8000000 ---p 00000000 00:00 0
2ac5a8000000-2ac5a8021000 rw-p 00000000 00:00 0
2ac5a8021000-2ac5ac000000 ---p 00000000 00:00 0
However, there are still quite a few anonymous segments in there, that don't correspond to an mmap call. Is there something else that could have created them?
Thanks,
David
david.muse@firstworks.com