Oh right, it's table lookup that's crashing, not division by zero
directly. Thanks for the info.


On Mon, Apr 19, 2021 at 7:46 PM Stéphane Letz <l...@grame.fr> wrote:
>
> All backends actually crash. Read again:
>
> ======
> In Faust, the interval calculation system on signals is supposed to detect 
> possible problematic computations at compile time, and refuse to compile the 
> corresponding DSP code. But since the interval calculation is currently quite 
> imperfect, it can misbehave and generate prossible problematic code, that 
> will possibly misbehave at runtime. The typical case is when producing 
> indexes to access rdtable/rwtable or delay lines, that may trigger memory 
> access crashes as explained before.
> ======
>
> Stéphane
>
>
> > Le 19 avr. 2021 à 19:44, Kjetil Matheussen <k.s.matheus...@gmail.com> a 
> > écrit :
> >
> > Thank you. But should the interpreter crash though?
> >
> > This program does not crash:
> >
> >  import("stdfaust.lib");
> >  process = 1000 / hslider("divPitch", 10, 0, 10, 0.01);
> >
> > While this one does crash:
> >
> >  import("stdfaust.lib");
> >  process = os.osc(1000 / hslider("divPitch", 10, 0, 10, 0.01));
> >
> >
> > Thread 14 "Runner" received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread 0x7fff768f6700 (LWP 18030)]
> > 0x0000000002f3a11c in FBCInterpreter<float,
> > 0>::ExecuteBlock(FBCBlockInstruction<float>*, bool) ()
> > (gdb) bt
> > #0  0x0000000002f3a11c in FBCInterpreter<float,
> > 0>::ExecuteBlock(FBCBlockInstruction<float>*, bool) ()
> > #1  0x0000000002eeaa90 in interpreter_dsp_aux<float, 0>::compute(int,
> > float**, float**) ()
> > #2  0x0000000002579661 in RT_process_effect2 (outputs=0x7fff768f3540,
> > inputs=0x7fff768f23c0, num_frames=64, time=<optimized out>,
> > data=0x6220002dd900)
> >    at audio/Faust_plugins_template2.cpp:547
> >
> >
> >
> >
> >
> >
> > On Mon, Apr 19, 2021 at 7:24 PM Stéphane Letz <l...@grame.fr> wrote:
> >>
> >> This is a the kind of problematic code that the compiler does not 
> >> correctly handle in a perfect way. More info here: 
> >> https://faustdoc.grame.fr/manual/faq/#produced-nan-or-infinity-values-and-table-access
> >>
> >> Stéphane
> >>
> >>> Le 19 avr. 2021 à 19:10, Kjetil Matheussen <k.s.matheus...@gmail.com> a 
> >>> écrit :
> >>>
> >>> Hi,
> >>>
> >>> I don't know if this is a bug in the compiler, the interpreter
> >>> backend, or the faust code itself, but the interpreter backend crashes
> >>> when it runs this code:
> >>>
> >>> import("stdfaust.lib");
> >>> divPitch = hslider("divPitch", 10, 0, 10, 0.01);
> >>> enable5 = button("enable2");
> >>> process = os.osc(1000 / divPitch) * enable5 <: _,_;
> >>>
> >>> ...and the "divPitch" slider is set to 0.
> >>> (I got this code anonymously through the Radium crash reporter.)
> >>>
> >>> I think it's a bug in the compiler though since it refuse to compile this 
> >>> code:
> >>>
> >>> process = 1000 / 0.0;
> >>>
> >>>
> >>> _______________________________________________
> >>> Faudiostream-users mailing list
> >>> Faudiostream-users@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> >>
>


_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to