Brahm, David
2006-Oct-17 15:34 UTC
[R] Error: STRING_ELT() can only be applied to a 'character vector', not a 'builtin'
I have a daily job that attaches hundreds of pseudo-packages containing data as promise objects (DDP's, ref: g.data package), and plots the results to a multi-page pdf device. Sometimes it fails. Under R-2.2.1 it just gave segfaults. Under R-2.3.1 it gave this error message: *** caught segfault *** address (nil), cause 'memory not mapped' Traceback: 1: load(system.file("data", paste(i, "RData", sep = "."), package pkg), env) 2: g.data.load("tm.time", "hist.20051012") 3: g.inorder(93500, tm.time, 160000) aborting ... Segmentation fault Under R-2.4.0, it now gives this message: Error: STRING_ELT() can only be applied to a 'character vector', not a 'builtin' (which appears to be generated inside main/memory.c). I'm sorry I can't give a reproducible example, because it seems to happen randomly, and at different points in the process. So this is just a shot in the dark -- does anybody recognize this behavior? TIA. -- David Brahm (brahm at alum.mit.edu)
Prof Brian Ripley
2006-Oct-17 17:12 UTC
[R] Error: STRING_ELT() can only be applied to a 'character vector', not a 'builtin'
I suspect you have a protection problem. The specific message you quote indicates that STRING_ELT is being called on an object of inappropriate type: but it is quite likely that it is being called on uninitialized memory as the intended object has been garbage-collected. Messages from a corrupted R session do not always make sense: see the debugging info in `Writing R Extensions' and especially the use of gctorture and valgrind. Followups to R-devel, please: this looks very like a programming issue. On Tue, 17 Oct 2006, Brahm, David wrote:> I have a daily job that attaches hundreds of pseudo-packages containing > data as promise objects (DDP's, ref: g.data package), and plots the > results to a multi-page pdf device. Sometimes it fails. Under R-2.2.1 > it just gave segfaults. Under R-2.3.1 it gave this error message: > > *** caught segfault *** > address (nil), cause 'memory not mapped' > Traceback: > 1: load(system.file("data", paste(i, "RData", sep = "."), package > pkg), env) > 2: g.data.load("tm.time", "hist.20051012") > 3: g.inorder(93500, tm.time, 160000) > aborting ... > Segmentation fault > > Under R-2.4.0, it now gives this message: > > Error: STRING_ELT() can only be applied to a 'character vector', not a > 'builtin' > > (which appears to be generated inside main/memory.c). > > I'm sorry I can't give a reproducible example, because it seems to > happen randomly, and at different points in the process. So this is > just a shot in the dark -- does anybody recognize this behavior? TIA. > > -- David Brahm (brahm at alum.mit.edu) > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595