lilypond-devel
[Top][All Lists]
Advanced

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

Valgrinding lilypond


From: Reinhold Kainhofer
Subject: Valgrinding lilypond
Date: Mon, 31 Jan 2011 14:52:10 +0100
User-agent: KMail/1.13.5 (Linux/2.6.35-25-generic; KDE/4.6.0; i686; ; )

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



reply via email to

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