[Rd] Calling C fn crashes (PR#4281)

ashenfluff at yahoo.com ashenfluff at yahoo.com
Wed Sep 24 18:54:22 MEST 2003


Full_Name: Ben K.
Version: 1.7.1
OS: Win 2000
Submission from: (NULL) (208.243.20.222)



This C code doesn't crash:

void init(SEXP rho, int *o){
    SEXP vars   = findVar(install("vars"), rho);
 }


It's called using:

vars        <-as.data.frame(NULL)
vars$delta  <-7
dyn.load("c_fns.dll")
print(.C("init",.GlobalEnv,o=as.integer(3))$o)


However, this does crash (``Rgui has generated errors and will be closed by
Windows''):

void init(SEXP rho, int *o){
    SEXP vars   = findVar(install("vars"), R_GlobalEnv);
}


This also crashes:

void init(SEXP rho, int *o){
    SEXP vars   = findVar(install("vars"), rho);
    *o = INTEGER(getListElement(vars,"delta"))[0];
}

(where GetListElement is that function from the R help)

Further, if I source dyn.load("c_fns.dll") twice, R starts churning away, taking
up 100% of the CPU to do nothing, until I pull up the task manager and kill R.
This happens whether I've called dyn.unload or not.

All of this runs just fine under Linux. But I have no experience with
programming in Windows, so this is all too subtle for me to work out.

Thaks for your help,

B



More information about the R-devel mailing list