[Rd] Strange behavior of C compiled program
mathieu.ribatet at epfl.ch
Mon Feb 9 10:18:23 CET 2009
You might have a look at the "Writing R Extensions" manual - especially
valgrind and/or gdb.
By the way, your error is probably due to array size problem - i.e. tmp
is of size n and you call tmp[n+1] for example. Valgrind will detect in
automagically for you.
Le lundi 09 février 2009 à 10:05 +0100, Christophe Genolini a écrit :
> Thanks, that was a stupid mistake (I did not know that this is so
> So I still have a problem realy more complex and I do not know was is
> wrong. I am running a .C procedure in a R loop.
> After 4, 5 or sometimes 6 call to the C procedure, Rgui crash (it closes
> asking me if I want to send a report to Microsoft).
> Is there a debuger that can run the C code with some R in it ? And what
> kind of mistake can provoque such a crash ?
> So I thaught that I find t
> > On 08/02/2009 5:37 PM, Christophe Genolini wrote:
> >> Hi the list,
> >> I need to include some C code in R, but the behavior of the C code is
> >> strange : Here is my code :
> >> --- 8< ---
> >> Rprintf("\n XXXX mTraj=%f
> >> mClus=%f",mTraj[i+nbId*c],mClustersCenter[j+nbClusters*c]);
> >> Rprintf("\nDistA=%d Tmp=%d",dist,tmp);
> >> tmp = mTraj[i+nbId* c] - mClustersCenter [j+nbClusters* c];
> >> Rprintf("\nDistB=%d Tmp=%d",dist,tmp);
> >> dist += (tmp * tmp);
> >> Rprintf("\nDistC=%d Tmp=%d",dist,tmp);
> >> --- 8< ----
> >> Herer are the stranges results it gives :
> >> XXXX mTraj=1.000000 mClus=3.000000
> >> DistA=0 Tmp=0
> >> DistB=0 Tmp=0
> >> DistC=0 Tmp=1074790400
> >> I ask on a C chat, but no one can answer me.
> >> Any idea of what wrong ?
> > You likely have the wrong types for the variables you're printing. In
> > C, the format has to match the type of the variable; if you use the
> > wrong one, you get garbage.
> > Duncan Murdoch
Institute of Mathematics
Ecole Polytechnique Fédérale de Lausanne
STAT-IMA-FSB-EPFL, Station 8
CH-1015 Lausanne Switzerland
Tel: + 41 (0)21 693 7907
More information about the R-devel