[PD] rvbap crashes

Iain Mott mott at reverberant.com
Thu Oct 6 13:32:54 CEST 2011


Thanks for the debugging information. I followed your instructions and
came up with similar errors when running: 

valgrind pd rvbap-help.pd

ie.

==4000== Invalid write of size 4
==4000==    at 0x4034D0F: rvbap_bang (rvbap.c:619)
==4000==    by 0x80B7362: outlet_bang (in /usr/bin/pd)
==4000==  Address 0x49df6ec is 4 bytes before a block of size 16 alloc'd
==4000==    at 0x4025315: calloc (vg_replace_malloc.c:467)
==4000==    by 0x80B8710: getbytes (in /usr/bin/pd)
==4000== 


this corresponds to the following block of code and the last statement
in this "final_gs[ls[i]-1]=g[i];", is line 619 cited above.

static void rvbap_bang(t_rvbap *x)            
// top level, vbap gains are calculated and outputted   
{
    t_atom at[MAX_LS_AMOUNT]; 
    float g[3];
    long ls[3];
    long i;
    float *final_gs, overdist, oversqrtdist;
    final_gs = (float *) getbytes(x->x_ls_amount * sizeof(float));
    if(x->x_lsset_available ==1){
        vbap(g, ls, x);
        for(i=0;i<x->x_ls_amount;i++)
            final_gs[i]=0.0;  
        for(i=0;i<x->x_dimension;i++){
            final_gs[ls[i]-1]=g[i];  
        }

     .........

My C programming is very rusty to say the least and I've not been able
to fix it.

If it's obvious to anyone else - please let me know.

Best,

Iain


On Wed, 2011-10-05 at 21:13 -0400, Mathieu Bouchard wrote:
> Le 2011-10-05 à 14:59:00, Iain Mott a écrit :
> 
> > I'm having problems already cited elsewhere with rvbap - whereby it
> > crashes with a "Signal 6" when adjusting the azimuth and having first
> > configured the external with a 2D speaker array (eg. with a message:
> > "define_loudspeakers 2 -45 45 0 180").
> > I've tried this with pdextended on linux (i'm using ubuntu 11.04) and
> > also by compiling the external with this source:
> > http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/externals/vbap/
> > Same thing.
> > Does anyone have any suggestions?
> 
> When you compile the external from source, you have the possibility to 
> enable debug. I edited Makefile (with an uppercase) to change that, but 
> debugging info was already enabled (-g). I changed the optimisation flags 
> though (-O1 instead of -O6 -fomit-frame-pointer).
> 
> btw, the use of those flags is misleading, as -O6 is completely the same 
> as -O3, and -fomit-frame-pointer (which hinders debugging) is already 
> included in -O2 and -O3 (in -O1 it depends, see manpage).
> 
> -funroll-loops, however, has no impact on debuggability...
> 
> Then if you run :
> 
>    valgrind pd vbap-help.pd
> 
> and click around a bit, you get :
> 
> ==10071== Invalid read of size 4
> ==10071==    at 0x4F42667: additive_vbap (vbap.c:419)
> ==10071==    by 0x4F43527: vbap_bang (vbap.c:526)
> ==10071==    by 0x4F45217: choose_ls_tuplets (define_loudspeakers.c:757)
> ==10071==    by 0x4F45664: vbap_def_ls (define_loudspeakers.c:62)
> ==10071==    by 0x80C7498: pd_typedmess (m_class.c:716)
> ==10071==    by 0x3FFFFFFF: ???
> ==10071==  Address 0x43886bc is 4 bytes before a block of size 16 alloc'd
> ==10071==    at 0x4024F12: calloc (vg_replace_malloc.c:467)
> ==10071==    by 0x80CB2BC: getbytes (m_memory.c:24)
> ==10071==    by 0x4F45217: choose_ls_tuplets (define_loudspeakers.c:757)
> ==10071==    by 0x4F45664: vbap_def_ls (define_loudspeakers.c:62)
> ==10071==    by 0x80C7498: pd_typedmess (m_class.c:716)
> ==10071==    by 0x3FFFFFFF: ???
> 
> which is a lot more informative when it can report function names, rather 
> than just the library names...
> 
>   ______________________________________________________________________
> | Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC





More information about the Pd-list mailing list