lilypond-devel
[Top][All Lists]
Advanced

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

Re: Valgrinding lilypond


From: Joe Neeman
Subject: Re: Valgrinding lilypond
Date: Mon, 31 Jan 2011 11:09:01 -0800

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 <address@hidden> 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, address@hidden, 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
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Attachment: guile_supp
Description: Binary data


reply via email to

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