[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-bug: [Bug 909358] Re: race condition in libgeda
Bug was fixed by a commit
git master commit 78c8ee905dad0dbfde548debb2be5790d4b2fb71
http://git.gpleda.org/?p=gaf.git;a=commit;h=78c8ee905dad0dbfde548debb2be5790d4b2fb71
commit 78c8ee905dad0dbfde548debb2be5790d4b2fb71
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Commit: Peter TB Brett <peter@xxxxxxxxxxxxx>
scheme-api: Store a TOPLEVEL pointer in OBJECT smobs.
When an OBJECT smob is created in Scheme code, and then goes out of
scope without being added to a component or to a page, we need to be
able to delete the object from the Guile garbage collector. This
deletion occurs in a smob free function.
To delete an OBJECT, we need to call s_object_delete(), which requires
an additional TOPLEVEL argument. Previously, we have obtained a
TOPLEVEL by using edascm_c_current_toplevel(). Unfortunately, this
(indirectly) calls scm_fluid_ref(), which is not permitted to be
called from a smob free function; if called in that context, it may
cause a deadlock.
This patch alters OBJECT smobs to be double-length smobs, with the
current TOPLEVEL at the time the smob was created baked into the
second data word. This avoids the need to use
edascm_c_current_toplevel() when garbarge-collecting an OBJECT, but
it's also somewhat hacky. :-(
Closes-bug: lp-909358
** Changed in: geda
Status: Triaged => Fix Committed
--
You received this bug notification because you are a member of gEDA Bug
Team, which is subscribed to gEDA.
https://bugs.launchpad.net/bugs/909358
Title:
race condition in libgeda
Status in GPL Electronic Design Automation tools:
Fix Committed
Bug description:
I think i found a race condition in gschem.
I cannot say how to replicate this, at now, but i notice this happens after using 'er' keys combination on a bunch of pins.
I think, also, the race condition happens when the guile garbage collector runs.
I attach a file containing the stack frame from the freeze of gschem to the main call.
I hope this can help.
Regards,
Luigi
To manage notifications about this bug go to:
https://bugs.launchpad.net/geda/+bug/909358/+subscriptions
_______________________________________________
geda-bug mailing list
geda-bug@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-bug