beast on linux/alpha - minor "bug"



Hi altogether,

Many programs doing heavy foating-point math cause problems on the alpha
architecture - they "die" on Flaoting-point-exceptions, and so does beast.
The problem are irregular fp-numbers like Inf and NaN which cause the
Alpha-FPU to throw exeptions even when they're only stored in its registers
(if I understood correctly).

There are probably many problematic places in the beast/BSE-sources, but
one special "bug" leads to a SIGFPE every time I tried to load the example
osc-test.bse
It's located in beast-gtk/bstcanvassource.c on line 693, common to beast
0.5.3, 0.5.4 and the cvs-version from last wednesday:
d_y /= n_channels;
Since n_channels may be zero this leads to d_y becoming Inf. It
obviously doesn't hurt everywhere else, d_y isn't used, if n_channels==0
(due to the for-loop on line 727) - but the Alpha already throws an
exception when generating this "infinite".

A simple
	if(n_channels!=0) d_y /= n_channels;
corrects this problem and doesn't hurt on this place (in terms of
performance :-)) )

Could this be corrected in the sources ?? Of course, Alpha is unfortunately
obsolete, but many people still own and use them.

Thanks,
Marius Hillenbrand
-- 
living a RISCy life



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