realloc stack use under O0 for x86_64

D'Alessandro, Luke K ldalessa at indiana.edu
Wed Mar 25 17:57:28 PDT 2015


> On Mar 25, 2015, at 8:34 PM, Jason Evans <jasone at canonware.com> wrote:
> 
> On Mar 25, 2015, at 11:48 AM, D'Alessandro, Luke K <ldalessa at indiana.edu> wrote:
>> We have a lightweight threading system where we are using very small stacks, on the order of 8-32k. We depend on jemalloc for scalable allocation.
>> 
>> When we compile jemalloc for debugging purposes, we see realloc using a large amount of stack space:
>> 
>> ```asm
>> 0000000000070e48 <realloc>:
>>  70e48:       55                      push   %rbp
>>  70e49:       48 89 e5                mov    %rsp,%rbp
>>  70e4c:       53                      push   %rbx
>>  70e4d:       48 81 ec 68 62 00 00    sub    $0x6268,%rsp
>> ```
> 
> Wow, that's far more stack space than I can imagine an explanation for.  What version of jemalloc is this happening with, which OS, compiler, etc.?

Hi Jason,

This was with

jemalloc: 562d266511053a51406e91c78eba640cb46ad9c8
./configure CFLAGS="-O0 -g”

uname -a
Linux #### 3.2.0-59-generic #90-Ubuntu SMP Tue Jan 7 22:43:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

* gcc 4.9.2

[original]

* gcc 4.6.4

0000000000070a26 <realloc>:
   70a26:       55                      push   %rbp
   70a27:       48 89 e5                mov    %rsp,%rbp
   70a2a:       53                      push   %rbx
   70a2b:       48 81 ec 18 5f 00 00    sub    $0x5f18,%rsp

* clang-3.6.0

000000000000aea0 <realloc>:
    aea0:       55                      push   %rbp
    aea1:       48 89 e5                mov    %rsp,%rbp
    aea4:       41 56                   push   %r14
    aea6:       53                      push   %rbx
    aea7:       48 81 ec c0 13 00 00    sub    $0x13c0,%rsp

Linux #### 3.0.101-0.31.1_1.0502.8394-cray_ari_s #1 SMP Wed Sep 10 04:03:41 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux:

* icc version 15.0.1 (gcc version 4.3.0 compatibility)

000000000007f2b7 <realloc>:
   7f2b7:       55                      push   %rbp
   7f2b8:       48 89 e5                mov    %rsp,%rbp
   7f2bb:       48 81 ec e0 79 00 00    sub    $0x79e0,%rsp

I’d be surprised if you didn’t see something like this with any gcc/LInux/CFLAGS=“-O0 -g” build.

Luke


More information about the jemalloc-discuss mailing list