1) Why did you submit this *twice*, as PR#7826 and PR#7827? Please don't be so careless of the volunteers' time.
2) > print.POSIXct function (x, ...) { print(format(x, usetz = TRUE, ...), ...) invisible(x) } is definitely *not* implicated. (Use of ... in two places is correct.) 3) On FC3: > unusual_and_faults Error: protect(): protection stack overflow > format(unusual_and_faults) Error: protect(): protection stack overflow > as.POSIXlt(unusual_and_faults) Error: protect(): protection stack overflow which is what should happen. It looks like RH9 has an inadequate stack size for the new recursion limits of R 2.1.0. This is nothing whatsoever to do with print.POSIXct. The problem is in fact in c.POSIXct which is not checking its arguments. On Sat, 30 Apr 2005 [EMAIL PROTECTED] wrote: > In attempting to build R using > > rpmbuild --rebuild R-2.1.0-0.fdr.2.fc3.src.rpm > > on a fairly up-to-date RedHat 9 system (that is, with patches installed > through May 1 2004), it failed at the make check-all step. > > The problem was reproducible by going into the tests directory and > > make test-Segfault > > The last lines of the saved file no-segfault.Rout.fail are > >>> ## c.POSIXct : >>> f <- get("c.POSIXct", pos = 'package:base') >>> f() >> character(0) >>> f(NULL) >> character(0) >>> f(,NULL) >> Error in lapply(list(...), unclass) : argument is missing, with no default >>> f(NULL,NULL) >> character(0) >>> f(list()) >> character(0) >>> f(l0) >> character(0) > > I was able to reproduce the problem (a segfault) as the following simple > transcript demonstrates: > > LC_ALL=C SRCDIR=. R_DEFAULT_PACKAGES= ../bin/R --vanilla > > R : Copyright 2005, The R Foundation for Statistical Computing > Version 2.1.0 (2005-04-18), ISBN 3-900051-07-0 > > R is free software and comes with ABSOLUTELY NO WARRANTY. > You are welcome to redistribute it under certain conditions. > Type 'license()' or 'licence()' for distribution details. > > R is a collaborative project with many contributors. > Type 'contributors()' for more information and > 'citation()' on how to cite R or R packages in publications. > > Type 'demo()' for some demos, 'help()' for on-line help, or > 'help.start()' for a HTML browser interface to help. > Type 'q()' to quit R. > > > unusual_but_ok <- c.POSIXlt(character(0)) > > unusual_but_ok > character(0) > > unusual_and_faults <- c.POSIXct(character(0)) > > unusual_and_faults > Segmentation fault > > Running this test program under gdb, we find that we're running off the > end of the stack, with 4222 stack frames showing -- apparently in an > infinite recursion -- "as.character" shows up every 69 function calls: > > #64 0x080ea1ef in Rf_usemethod (generic=0x81c8b12 "as.character", obj=0x0, > call=0x85a04f4, > args=0x8af8b00, rho=0x8af8b70, callrho=0x8af8b70, defrho=0x829d4c0, > ans=0xbff042b8) > at objects.c:328 > > #133 0x080ea1ef in Rf_usemethod (generic=0x81c8b12 "as.character", obj=0x0, > call=0x85a04f4, > args=0x8af35f0, rho=0x8af3660, callrho=0x8af3660, defrho=0x829d4c0, > ans=0xbff08538) > at objects.c:328 > > #202 0x080ea1ef in Rf_usemethod (generic=0x81c8b12 "as.character", obj=0x0, > call=0x85a04f4, > args=0x8aeca08, rho=0x8aeca78, callrho=0x8aeca78, defrho=0x829d4c0, > ans=0xbff0c7b8) > at objects.c:328 > > #271 0x080ea1ef in Rf_usemethod (generic=0x81c8b12 "as.character", obj=0x0, > call=0x85a04f4, > args=0x8ae7514, rho=0x8ae7584, callrho=0x8ae7584, defrho=0x829d4c0, > ans=0xbff10a38) > at objects.c:328 > > #340 0x080ea1ef in Rf_usemethod (generic=0x81c8b12 "as.character", obj=0x0, > call=0x85a04f4, > args=0x8ade4c0, rho=0x8ade530, callrho=0x8ade530, defrho=0x829d4c0, > ans=0xbff14cb8) > at objects.c:328 > > So it would seem that *printing* the unusual POSIXct value is suspect. > Looking at a R-1.8.1 install, we find these definitions in base/R/base: > > print.POSIXct <- function(x, ...) > { > print(format(x, usetz=TRUE), ...) > invisible(x) > } > > print.POSIXlt <- function(x, ...) > { > print(format(x, usetz=TRUE), ...) > invisible(x) > } > > However, looking at the 2.1.0 src file > R-2.1.0/src/library/base/R/datetime.R, we find > > print.POSIXct <- function(x, ...) > { > print(format(x, usetz=TRUE, ...), ...) > invisible(x) > } > > print.POSIXlt <- function(x, ...) > { > print(format(x, usetz=TRUE), ...) > invisible(x) > } > > Note the suspicious definition of print.POSIXct using *two* sets of > ellipses, and that the print.POSIXct and print.POSIXlt definitions no > longer match. > > /Jskud > > --please do not edit the information below-- > > Version: > platform = i686-pc-linux-gnu > arch = i686 > os = linux-gnu > system = i686, linux-gnu > status = > major = 2 > minor = 1.0 > year = 2005 > month = 04 > day = 18 > language = R > > [] > > ______________________________________________ > R-devel@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > -- Brian D. Ripley, [EMAIL PROTECTED] 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 ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel