[Rd] segfault isoreg with NAs
Martin Maechler
maechler at stat.math.ethz.ch
Fri Dec 21 18:03:29 CET 2007
Hi Tobias,
>>>>> "TobiasV" == Tobias Verbeke <tobias.verbeke at telenet.be>
>>>>> on Thu, 20 Dec 2007 08:50:16 +0100 writes:
TobiasV> I was able to reproduce the problem under Windows (R 2.6.1).
TobiasV> When running ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, NA, 8)),
TobiasV> the following message appears:
TobiasV> "R for Windows GUI front-end has encountered a problem and
TobiasV> needs to close. We are sorry for the inconvenience"
TobiasV> after which R closes.
thank you for keeping the topic live.
Just now I've wanted to address this as a "clean up before Christmas"
action.
The next versions of R definitely will no longer seg.fault here.
The question, what exactly one should have happening is another
one.
If you want (since nobody else seems particularly
interested) we can continue to look at this in off-list for a
while.
Best regards,
Martin
TobiasV> HTH,
TobiasV> Tobias
>> sessionInfo()
TobiasV> R version 2.6.1 (2007-11-26)
TobiasV> i386-pc-mingw32
TobiasV> locale:
TobiasV> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
TobiasV> States.1252;LC_MONETARY=English_United
TobiasV> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
TobiasV> attached base packages:
TobiasV> [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
>>
>>
TobiasV> ______________________________________________
TobiasV> R-devel at r-project.org mailing list
TobiasV> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list