I've just been investigating the problem with SuSE 8.2 again.  To 
recap, the RG4-0..8.5 package distributed with SuSE 8.2 has a problem 
in which playback jumps in one-second steps instead of proceeding 
smoothly.  It turns out that any RG4 source distribution built using 
the default configure options has the same problem.

I discovered that building without optimisation "fixed" the problem, 
but I wasn't sure whether that meant there was a bug in the compiler 
or whether we were doing something unreliable.  Anyway, I've checked 
it out now and I'm 96% sure it's an overzealous compiler optimisation 
in the floating-point conversion between musical time and real time.  
SuSE 8.2 shipped with a prerelease version of gcc-3.3, so it's fairly 
likely there are bugs like this.

I haven't found a workaround yet -- I've tried splitting the 
calculation into several parts, but that only works if I pause to 
print out the intermediate results (which obviously slows things down 
far more than not optimising).

So the upshot is: if you're using SuSE 8.2, configure with

  CXXFLAGS='-O0' ./configure ...

This is already in the FAQ, I'm just posting to say I'm fairly sure 
it'd be quite tricky for us to work around it in the code.  Unless 
gcc has a pragma to prevent optimisation in a local area -- anyone 
know?

Of course this doesn't inspire confidence in the correctness of other 
floating-point-intensive software in SuSE's distribution.


Chris



-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
Rosegarden-devel mailing list
[EMAIL PROTECTED] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to