[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