From: Hans Boehm <Hans.Boehm@hp.com>
To: abhishek desai <abhi00@gmail.com>
Cc: "java@gcc.gnu.org" <java@gcc.gnu.org>
Subject: Re: problem when mapping malloc to GC_malloc.
Date: Thu, 18 Jun 2009 16:30:00 -0000 [thread overview]
Message-ID: <alpine.LNX.1.10.0906180927340.1207@192.168.2.2> (raw)
In-Reply-To: <898285d30906180800q3b5bd3b2h1d4a11d6a8245e34@mail.gmail.com>
On Thu, 18 Jun 2009, abhishek desai wrote:
> Hi,
>
> My JNI code includes redefinitions to the malloc, free and realloc
> functions (shown below). These functions call GC_malloc, GC_free and
> GC_realloc respectively. This is done so that any calls to the malloc
> get allocated through the garbage collector. However this is failing
> with segfault. Any clues why this does not work ?
> I am using this code along with the libgcj library linked dynamically
> with my application.
>
> void *malloc(size_t size)
> {
> return GC_malloc(size);
> }
>
> void *realloc(void *ptr, size_t size)
> {
> return GC_realloc(ptr, size);
> }
>
> void free(void *ptr)
> {
> GC_free(ptr);
> }
>
>
> regards
> abhishek
>
The collector itself supports a REDIRECT_MALLOC option that might get you
closer. In general, this is very hard.
There are other functions (calloc, memalign, etc.) that you would also
have to replace, so that their clients don't end up using the original
malloc with GC_free. This is the easy part.
The hard part is that if you replace malloc, low level parts of the system
will also end up using GC_malloc, and sometimes squirrel away pointers to
the results in places the GC doesn't really know about. Recent versions
of the GC (7.1+) contains some hacks to try to handle this on Linux. But
the multithreaded versions still are sometimes not 100% robust. Gcj's
version is unlikely to work in this mode, except possibly in
single-threaded mode.
A real fix here would probably require some new hooks in glibc and the
startup and libpthread code.
Hans
next prev parent reply other threads:[~2009-06-18 16:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-18 15:00 abhishek desai
2009-06-18 15:14 ` Christian Nolte
2009-06-18 16:30 ` Hans Boehm [this message]
2009-06-18 18:18 ` abhishek desai
2009-06-18 19:01 ` BGB
2009-06-18 18:07 ` BGB
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LNX.1.10.0906180927340.1207@192.168.2.2 \
--to=hans.boehm@hp.com \
--cc=abhi00@gmail.com \
--cc=java@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).