[Rd] Segfault: .Call and classes with logical slots

Torsten Hothorn Torsten.Hothorn at rzmail.uni-erlangen.de
Mon Apr 26 17:30:02 CEST 2004


Hi,

the following example aiming at a class containing a logical slot
segfaults under R-1.9.0 when `gctorture(on = TRUE)' is used:

Code code (dummy.c):

#include <Rdefines.h>

SEXP foo() {

    SEXP ans;

    PROTECT(ans = NEW_OBJECT(MAKE_CLASS("test")));
    SET_SLOT(ans, install("lgl"), allocVector(LGLSXP, 1));
    LOGICAL(GET_SLOT(ans, install("lgl")))[0] = TRUE;
    UNPROTECT(1);
    return(ans);
}

R code (dummy.R):

dyn.load("dummy.so")

setClass("test", representation = representation(lgl = "logical"))

a = .Call("foo")
a # OK

gctorture(on = TRUE)
a = .Call("foo")
gctorture(on = FALSE)
a # segfault

which gives

R>
R>
R> dyn.load("dummy.so")
R>
R> setClass("test", representation = representation(lgl = "logical"))
[1] "test"
R>
R> a = .Call("foo")
R> a
An object of class "test"
Slot "lgl":
[1] TRUE

R>
R> gctorture(on = TRUE)
R> a = .Call("foo")
R> gctorture(on = FALSE)
Segmentation fault

Best,

Torsten

R> version
         _
platform i686-pc-linux-gnu
arch     i686
os       linux-gnu
system   i686, linux-gnu
status
major    1
minor    9.0
year     2004
month    04
day      12
language R
R>



 _______________________________________________________________________
|									|
|	Dr. rer. nat. Torsten Hothorn					|
|	Institut fuer Medizininformatik, Biometrie und Epidemiologie	|
|	Waldstrasse 6, D-91054 Erlangen, Deutschland			|
|	Tel: ++49-9131-85-22707	(dienstl.)				|
|	Fax: ++49-9131-85-25740						|
|	Email:  Torsten.Hothorn at rzmail.uni-erlangen.de			|
|       	PLEASE send emails cc to torsten at hothorn.de		|
|	Web: http://www.imbe.med.uni-erlangen.de/~hothorn		|
|_______________________________________________________________________|



More information about the R-devel mailing list