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 <[email protected]> > 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 > >>> [email protected] > >>> https://lists.gnu.org/mailman/listinfo/denemo-devel > >> > >> > >> _______________________________________________ > >> Denemo-devel mailing list > >> [email protected] > >> https://lists.gnu.org/mailman/listinfo/denemo-devel > > > > > > _______________________________________________ > > Denemo-devel mailing list > > [email protected] > > https://lists.gnu.org/mailman/listinfo/denemo-devel _______________________________________________ Denemo-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/denemo-devel
