Guile's garbage collection generates many valgrind warnings (although a
quick google suggests that they've been improving the situation). I've
attached a suppression file that eliminates many of the bogus warnings.

Cheers,
Joe

On Mon, Jan 31, 2011 at 5:52 AM, Reinhold Kainhofer
<reinh...@kainhofer.com>wrote:

> Due to the crash with the part-combiner (which I cannot reproduce,
> unfortunately), I'm currently taking a closer look at lilypond with
> valgrind.
>
> 1) Somehow the Rhythmic_head interface generates a "Conditional jump or
> move
> depends on uninitialised value(s)" warning (none of the other ADD_INTERFACE
> calls does, only Rhythmic_head):
>
> ==1979== Conditional jump or move depends on uninitialised value(s)
> ==1979==    at 0x409F42C: scm_gc_mark (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40DA964: scm_i_symbol_mark (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x409F227: scm_gc_mark_dependencies (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x409F44B: scm_gc_mark (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x409F4F9: scm_mark_locations (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40F5511: scm_threads_mark_stacks (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x409F539: scm_mark_all (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x409E54B: scm_i_gc (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40A02AA: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40A079F: scm_gc_malloc (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40DAA0C: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40DAED4: scm_i_make_string (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40DB21D: scm_from_locale_stringn (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x40DB274: scm_from_locale_string (in
> /usr/lib/libguile.so.17.3.1)
> ==1979==    by 0x8103144: add_interface(char const*, char const*, char
> const*)
> (grob-interface.cc:40)
> ==1979==    by 0x81ECA21: Rhythmic_head_init_ifaces() (rhythmic-head.cc:62)
> ==1979==    by 0x810E99F: ly_init_ly_module(void*) (guile-init.cc:45)
>
>
> This is from running only "valgrind --trace-children=yes lilypond" without
> any
> arguments or files to process, so that happends during initialization. The
> offending string in scm_from_locale_string is the description, i.e. "Note
> head
> or rest." in rhythmic-head.cc.
>
> I fail to see any different to other interfaces, which do not trigger such
> a
> warning. Any idea what might be wrong here?
>
>
> 2) The example for the 2.13.47 crash posted to the bug list does not crash
> here, but running it through valgrind shows a lot of warnings like the
> following:
>
>
> ==1739== Use of uninitialised value of size 4
> ==1739==    at 0x81D084A: Prob::mark_smob(scm_unused_struct*) (prob.cc:127)
> ==1739==    by 0x409F211: scm_gc_mark_dependencies (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F44B: scm_gc_mark (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F4F9: scm_mark_locations (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40F5511: scm_threads_mark_stacks (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F539: scm_mark_all (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409E54B: scm_i_gc (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40A02AA: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x81554AB: Moment::smobbed_copy() const (moment.cc:58)
> ==1739==    by 0x81640EF: ly_music_length(scm_unused_struct*) (music-
> scheme.cc:32)
> ==1739==    by 0x4096748: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4094C5A: scm_dapply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40934A7: scm_apply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4098A10: scm_call_1 (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4036713: scm_srfi1_map (in /usr/lib/libguile-srfi-srfi-1-
> v-3.so.3.0.2)
> ==1739==    by 0x4096813: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4094C5A: scm_dapply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40934A7: scm_apply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4098A10: scm_call_1 (in /usr/lib/libguile.so.17.3.1)
> ==1739==  Uninitialised value was created by a stack allocation
> ==1739==    at 0x409E424: scm_i_gc (in /usr/lib/libguile.so.17.3.1)
>
>
> or
>
>
> ==1739== Use of uninitialised value of size 4
> ==1739==    at 0x4086735: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F211: scm_gc_mark_dependencies (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F44B: scm_gc_mark (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F4F9: scm_mark_locations (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40F5511: scm_threads_mark_stacks (in
> /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409F539: scm_mark_all (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x409E54B: scm_i_gc (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40A02AA: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x81554AB: Moment::smobbed_copy() const (moment.cc:58)
> ==1739==    by 0x81640EF: ly_music_length(scm_unused_struct*) (music-
> scheme.cc:32)
> ==1739==    by 0x4096748: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4094C5A: scm_dapply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40934A7: scm_apply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4098A10: scm_call_1 (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4036713: scm_srfi1_map (in /usr/lib/libguile-srfi-srfi-1-
> v-3.so.3.0.2)
> ==1739==    by 0x4096813: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095612: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4095811: ??? (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4094C5A: scm_dapply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x40934A7: scm_apply (in /usr/lib/libguile.so.17.3.1)
> ==1739==    by 0x4098A10: scm_call_1 (in /usr/lib/libguile.so.17.3.1)
> ==1739==  Uninitialised value was created by a stack allocation
> ==1739==    at 0x82A5456: yyparse(void*) (parser.cc:2264)
>
>
> All of them have in common, that ly_music_length (or ly_moment_mul) and
> Moment::smobbed_copy are called and then the condition on the uninitialized
> value happens in scm_gc_mark function.
>
> Unfortunately, I'm unable to find out from where these are called, as it
> happens from scheme apparently, and valgrind does not provide any useful
> information about scheme calls...
>
> Any idea how to find out the offending code / moments?
>
>
>
> Thanks,
> Reinhold
>
> --
> ------------------------------------------------------------------
> Reinhold Kainhofer, reinh...@kainhofer.com, http://reinhold.kainhofer.com/
>  * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
>  * http://www.fam.tuwien.ac.at/, DVR: 0005886
>  * LilyPond, Music typesetting, http://www.lilypond.org
>
> _______________________________________________
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/lilypond-devel
>

Attachment: guile_supp
Description: Binary data

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to