This is the mail archive of the
java-prs@gcc.gnu.org
mailing list for the Java project.
[Bug libgcj/18266] SIGSEGV in GC_register_finalizer_inner ()
- From: "ovidr at users dot sourceforge dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: java-prs at gcc dot gnu dot org
- Date: 20 Jun 2005 16:25:13 -0000
- Subject: [Bug libgcj/18266] SIGSEGV in GC_register_finalizer_inner ()
- References: <20041101172052.18266.ovidr@users.sourceforge.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From ovidr at users dot sourceforge dot net 2005-06-20 16:25 -------
I've tried to create a testcase but can't seem to get a crash or infinite loop
lockup.
Anyway, I think I understand conceptually what must be done, but in practice
I'm still unsure of how to go about it. You don't seem to have a problem with
the call to:
_Jv_RegisterFinalizer (this, finalize_reference);
only
_Jv_RegisterFinalizer (referent, finalize_referred_to_object);
but since referent is an arbitrary object, what kind of finalizers can it
already have? I'm stumped on how to get access to an arbitrary object's
finalizers from natReference.cc. Is it just the heavy_lock structure from
natObject that needs to be considered somehow?
>From comment #10:
"My impression is that natReference.cc already keeps a fairly elaborate data
structure to which you should be able to add the prior finalization info"
This is the part that confuses me. Not all objects are References, so how would
a Reference know about some arbitrary Object's previous finalizers or even
attempt to maintain a data structure?
And once I have the Object's old finalizer (if there is one), I guess I just
run it, and register the new one with
"GC_REGISTER_FINALIZER_NO_ORDER(x, x, cd, 0, 0);"
from natReference's "finalize_referred_to_object" ?
Or am I way off track?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18266