From tobias.verbeke at telenet.be  Thu Dec 20 08:50:16 2007
From: tobias.verbeke at telenet.be (Tobias Verbeke)
Date: Thu, 20 Dec 2007 08:50:16 +0100
Subject: [Rd] segfault isoreg with NAs
In-Reply-To: <4762CAC9.4000506@telenet.be>
References: <4762CAC9.4000506@telenet.be>
Message-ID: <476A1EB8.1050305@telenet.be>

I was able to reproduce the problem under Windows (R 2.6.1).
When running ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, NA, 8)),
the following message appears:

"R for Windows GUI front-end has encountered a problem and
needs to close. We are sorry for the inconvenience"

after which R closes.

HTH,
Tobias

 > sessionInfo()
R version 2.6.1 (2007-11-26)
i386-pc-mingw32

locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United 
States.1252;LC_MONETARY=English_United 
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

> As can be seen below, adding a NA to the y values
> in a call to isoreg results in a segfault.
> 
> ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, NA, 8))
> 
> Adding missing values to the x values, on the contrary,
> gives an error, but maybe the error message could be
> tailored to this particular situation.
> 
> y <- c(5, 9, 1:2, 5:8, 3, 8)
> x <- c(1:9, NA)
> isoreg(x, y)
> ## error message: Error in if (!isOrd) { : missing value where 
> TRUE/FALSE needed
> 
> Please find below a (temporary) patch (against Revision 43692)
> for both the R source and the help file.
> 
> Kind regards,
> Tobias
> 
> ### patch isoreg.R ###
> 
> --- isoreg.R	2007-12-14 19:07:47.000000000 +0100
> +++ isoreg2.R	2007-12-14 19:11:20.000000000 +0100
> @@ -18,6 +18,9 @@
>   ##
>   isoreg <- function(x, y=NULL)
>   {
> +    if (any(is.na(x))) stop("x may not contain NA values")
> +    if (any(is.na(y))) stop("y may not contain NA values")
> +
>       xy <- xy.coords(x,y)
>       x <- xy$x
>       isOrd <- (!is.null(xy$xlab) && xy$xlab == "Index") || !is.unsorted(x)
> 
> ### patch isoreg.Rd ###
> 
> --- isoreg.Rd	2007-12-14 19:08:12.000000000 +0100
> +++ isoreg2.Rd	2007-12-14 19:15:00.000000000 +0100
> @@ -20,6 +20,7 @@
>     \item{x, y}{%in \code{isoreg},
>       coordinate vectors of the regression points.  Alternatively a single
>       plotting structure can be specified: see \code{\link{xy.coords}}.
> +    The coordinate vectors may not contain missing values.
>     }
>   }
>   \details{
> 
> 
> ### sessionInfo() information segfault ###
> 
>> sessionInfo()
> R version 2.6.0 (2007-10-03)
> i486-pc-linux-gnu
> 
> locale:
> LC_CTYPE=en_US.ISO-8859-15;LC_NUMERIC=C;LC_TIME=en_US.ISO-8859-15;LC_COLLATE=en_US.ISO-8859-15;LC_MONETARY=en_US.ISO-8859-15\
> ;LC_MESSAGES=en_US.ISO-8859-15;LC_PAPER=en_US.ISO-8859-15;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.ISO-885\
> 9-15;LC_IDENTIFICATION=C
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>> ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, NA, 8))
> 
>   *** caught segfault ***
> address 0x24, cause 'memory not mapped'
> 
> Process R segmentation fault (core dumped) at Fri Dec 14 17:48:22 2007
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>



[Rd] segfault isoreg with NAs
Tobias Verbeke