[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