public inbox for java-prs@sourceware.org help / color / mirror / Atom feed
From: "Hans dot Boehm at hp dot com" <gcc-bugzilla@gcc.gnu.org> To: java-prs@gcc.gnu.org Subject: [Bug libgcj/18266] SIGSEGV in GC_register_finalizer_inner () Date: Thu, 25 Nov 2004 01:50:00 -0000 [thread overview] Message-ID: <20041125015032.15858.qmail@sourceware.org> (raw) In-Reply-To: <20041101172052.18266.ovidr@users.sourceforge.net> ------- Additional Comments From Hans dot Boehm at hp dot com 2004-11-25 01:50 ------- After finally finding time to look at the code, it appears that my earlier guesses were correct. ::java::lang::ref::Reference::create in natReference.cc calls _Jv_RegisterFinalizer(referent ...), where referent is an arbitrary object, which may already have a finalizer. This is bad news, since the original finalizer will be dropped. The original finalizer may be a Java finalizer, or it may be one that was registered by the hash synchronization code to clean up a heavy lock entry for the object. In either case we lose. (The hash synchronization code is careful to not lose the original finalizer.) In both cases I think, we are likely to mostly introduce leaks, and crash only occasionally. So this may explain some other misbehavior. The fix may require some thought. At a minimum, we need to export more GC functionality, so that the Reference implementation can retrieve the old finalizer. (The hash synchronization code currently cheats and goes directly to the GC interface, which should also be fixed.) I think that so long as Reference gets the ordering right, and doesn't assume that all finalizers are Java finalizers, the hash synchronization code should work. It needs to drop the heavy lock before the object is deallocated, and while the lock is not held. I don't think the timing otherwise matters. If the object is resurrected 17 times, we can drop the heavy lock at any of those points, recreating it if necessary. This really needs to be fixed to make any use of References reliable. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |tromey at redhat dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18266
next prev parent reply other threads:[~2004-11-25 1:50 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2004-11-01 17:21 [Bug libgcj/18266] New: " ovidr at users dot sourceforge dot net 2004-11-01 17:22 ` [Bug libgcj/18266] " ovidr at users dot sourceforge dot net 2004-11-01 20:44 ` Hans dot Boehm at hp dot com 2004-11-01 22:08 ` ovidr at users dot sourceforge dot net 2004-11-08 3:00 ` ovidr at users dot sourceforge dot net 2004-11-08 19:56 ` Hans dot Boehm at hp dot com 2004-11-08 20:27 ` ovidr at users dot sourceforge dot net 2004-11-25 1:50 ` Hans dot Boehm at hp dot com [this message] 2004-11-25 3:25 ` tromey at gcc dot gnu dot org 2004-11-25 3:26 ` tromey at gcc dot gnu dot org 2004-12-02 13:43 ` pinskia at gcc dot gnu dot org 2005-05-17 20:40 ` daney at gcc dot gnu dot org 2005-05-17 20:47 ` pinskia at gcc dot gnu dot org 2005-06-08 21:14 ` ovidr at users dot sourceforge dot net 2005-06-09 5:11 ` Hans dot Boehm at hp dot com 2005-06-20 16:25 ` ovidr at users dot sourceforge dot net 2005-07-19 15:06 ` ovidr at users dot sourceforge dot net [not found] <bug-18266-7936@http.gcc.gnu.org/bugzilla/> 2006-03-08 19:27 ` tromey at gcc dot gnu dot org
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=20041125015032.15858.qmail@sourceware.org \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=java-prs@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: linkBe 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).