[Rd] segfault during build of 2.1.0 on RH9; print.POSIXct implicated (PR#7827)

From: <Jskud_at_jskud.com>
Date: Sat 30 Apr 2005 - 08:59:27 GMT


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 Received on Sat Apr 30 19:03:57 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:04 GMT