Thanks  Konstantin. I think putting jemalloc early enough worked.

But I am getting the following errors and it seems others have seen this error 
before . I am compiling with windriver toolchain. I ran the configure script, 
so I am wondering the configure script should have done the right thing and 
determined that all these definitions are already present and hence when 
generating the header file , should have skipped these definitions so that this 
is not an issue.

Do I need to pass specific options to configure or what is the right way to fix 
this issue ?

declaration of 'void* malloc(size_t) throw ()' throws different exceptions
jemalloc-3.6.0/include/jemalloc/jemalloc.h:137: error: from previous 
declaration 'void* malloc(size_t)'
usr/include/stdlib.h:474: error: declaration of 'void* calloc(size_t, size_t) 
throw ()' throws different exceptions
jemalloc-3.6.0/include/jemalloc/jemalloc.h:139: error: from previous 
declaration 'void* calloc(size_t, size_t)'
usr/include/stdlib.h:486: error: declaration of 'void* realloc(void*, size_t) 
throw ()' throws different exceptions
jemalloc-3.6.0/include/jemalloc/jemalloc.h:144: error: from previous 
declaration 'void* realloc(void*, size_t)'
usr/include/stdlib.h:488: error: declaration of 'void free(void*) throw ()' 
throws different exceptions
/include/jemalloc/jemalloc.h:145: error: from previous declaration 'void 
free(void*)'
lib/gcc/i586-wrs-linux-gnu/4.3.2/../../../../i586-wrs-linux-gnu/include/c++/4.3.2/cstdlib:73,




-----Original Message-----
From: Konstantin Tokarev [mailto:annu...@yandex.ru] 
Sent: Monday, May 18, 2015 12:20 PM
To: Mayank Kumar (mayankum); jemalloc-discuss@canonware.com
Subject: Re: jemalloc linking



18.05.2015, 19:30, "Mayank Kumar (mayankum)" <mayan...@cisco.com>:
> Hi All
>
> My application worked perfectly with LD_PRELOAD and the virtual memory growth 
> was contained. As soon as I linked it dynamically with jemalloc, this wasn’t 
> the case. So virtual memory kept growing. So  I am guessing that my 
> application is still not using jemalloc but libc’s default malloc when 
> linking dynamically. My application is a binary which links to many 
> dynamically loadable libraries some of which are internally built and some 
> are open source versions which we don’t always build. My questions are:-
>
> 1.       When linking dynamically with jemalloc, is it a requirement to have 
> –ljemalloc as early as possible or possibly the first library being linked 
> to, to override the default malloc ?

Yes - this is how dynamic linking works on ELF platforms. When linker sees 
undefined symbol "malloc" it will take it from first ELF object (in order of 
specified ld arguments) which has defined "malloc" symbol.

>
> 2.       What method does jemalloc uses while linking to override malloc, 
> does it use the malloc_hooks to override or just the normal linking, so that 
> whatever the linker gets first, it will link to .

LD_PRELOAD deals only with ELF linking, injecting your library(ies) in the 
beginning of *.so list used by runtime linked (e.g., ld-linux.so)

>
> 3.       Would linking statically  solve this issue, although my preference 
> would be to link dynamically since I have at least 10 processes which needs 
> jemalloc, and at least they would share the code in memory.
>
> 4.       When linking with external open source libraries, do I need to 
> re-compile those with jemalloc as well to make sure any mallocs in those 
> libraries also go through jemalloc or that is not required. I am guessing it 
> should not be required as long as my process links to the right malloc 
> library, their dependencies should be correctly resolved.



-- 
Regards,
Konstantin
_______________________________________________
jemalloc-discuss mailing list
jemalloc-discuss@canonware.com
http://www.canonware.com/mailman/listinfo/jemalloc-discuss

Reply via email to