denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] scm_dynwind_xxx disabled


From: Richard Shann
Subject: Re: [Denemo-devel] scm_dynwind_xxx disabled
Date: Wed, 04 May 2011 09:36:33 +0100

The fixes have got Denemo working again, but we have memory corruption
on freeing scores. I have disabled the dynwind stuff pending further
investigations.
To get a crash with the dynwind in view.c you can do this:

 d-New then insert a rehearsal mark and d-New again. (repeat)


I think we need to look at the strings to make sure they are all
suitable for being freed - some functions return a constant string.
Richard


On Tue, 2011-05-03 at 10:02 -0500, Jeremiah Benham wrote:
> I'll try to fix these issues later today.
> 
> Thanks,
> Jeremiah
> 
> On May 3, 2011, at 9:22 AM, Richard Shann <address@hidden>  
> wrote:
> 
> > a more critical example of the same thing (view.c:375):
> >
> >  SCM2LSTRING(valuename, value);\
> >  extern gboolean what##_directive_put_##field (gchar *tagname, gchar
> > *valuename);\
> >  scm_dynwind_end();\
> >  return SCM_BOOL(what##_directive_put_##field (tagname, valuename));\
> > }
> >
> > here valuename and tagname will already have been freed.
> >
> > Richard
> >
> >
> > On Tue, 2011-05-03 at 14:39 +0100, Richard Shann wrote:
> >> Jeremiah,
> >>
> >> I have had a read of the guile docs, I cannot claim to have a good
> >> understanding, but AFAICS the sort of problem we have is shown by  
> >> this
> >> example:
> >>
> >> This is a bit of the code from view.c
> >>
> >> if(name&&thepage&&post&&oth){
> >>   scm_dynwind_end();
> >>   return scm_from_locale_string(post_denemodotorg(name, thepage, oth,
> >> post));
> >> }
> >>
> >> The scm_dynwind_end() call is made before  the call to
> >> post_denemodotorg() which uses the values name, thepage etc as
> >> parameters. So I guess you need
> >>
> >> gchar *ret = post_denemodotorg(name, thepage, oth, post);
> >> scm_dynwind_end();
> >> return scm_take_locale_string(ret);
> >>
> >>
> >> the scm_take_locale_string() is the one to use here, as otherwise ret
> >> will not be freed. (Hmm, I am assuming ret *should* be freed, perhaps
> >> not, in which case the _from_ version is needed.)
> >> HTH
> >>
> >> Richard
> >>
> >>
> >>
> >> On Tue, 2011-05-03 at 09:48 +0100, Richard Shann wrote:
> >>> Jeremiah, I put some #defines at the top of view.c to disable the
> >>> dynwind stuff as the string handling seems to be very broken with  
> >>> it. I
> >>> get no custom buttons, and trying to set the score title for example
> >>> gives strings pointing to the wrong bits of memory.
> >>> Do you see this too? (I checked with Nils clean build which shows  
> >>> the
> >>> problem).
> >>> Richard
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> Denemo-devel mailing list
> >>> address@hidden
> >>> https://lists.gnu.org/mailman/listinfo/denemo-devel
> >>
> >>
> >> _______________________________________________
> >> Denemo-devel mailing list
> >> address@hidden
> >> https://lists.gnu.org/mailman/listinfo/denemo-devel
> >
> >
> > _______________________________________________
> > Denemo-devel mailing list
> > address@hidden
> > https://lists.gnu.org/mailman/listinfo/denemo-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]