[R-SIG-Mac] *** caught segfault *** error
Ernest Turro
ernest.turro at ic.ac.uk
Wed Dec 6 13:45:13 CET 2006
Dear all,
I have tried plotting Juanjo's offending shape file using X11.app and
it works fine. It seems therefore that the problem is related to
Quartz as opposed to the non-GUI R code.
Best,
Ernest Turro
On 6 Dec 2006, at 10:59, Abellan Andres, Juanjo wrote:
> Dear all,
>
> I forgot to mention that Roger Bivand, who developed package maptools,
> wrote a special function for me to determine which polygon caused the
> error. The error happens on the 256th polygon, and he suspects this
> is a
> signal that the loop index is running in a variable of the wrong size
> (in an unsigned byte 0-255) ? I guess the question is could I run a
> debugger with R.app to actually trap the error.
>
> Many thanks.
>
> Juanjo
>
>
> -----Original Message-----
> From: Abellan Andres, Juanjo
> Sent: 06 December 2006 10:39
> To: 'r-sig-mac at stat.math.ethz.ch'
> Cc: 'Roger Bivand'; Turro, Ernest
> Subject: *** caught segfault *** error
>
>
> Dear R for Mac users,
>
> I use R 2.4.0 on an iMac running Mac OS X 10.4.8, with a 2.16GHz
> Intel Core 2 Duo and 2GB 667 MHz DDR2 SDRAM.
>
> I get an error below whenever I try to plot a map from a shapefile
> imported into R; I've tried packages shapefiles and spdep, and two
> different shapefiles, and get the error in all 4 combinations.
>
> The shapefile is imported correctly, and I get the error only when I
> try to plot the map. I specifically use commands
>
>> library(spdep)
> Loading required package: tripack
> Loading required package: maptools
> Loading required package: foreign
> Loading required package: sp
> Loading required package: SparseM
> Package SparseM (0.71) loaded. To cite, see citation("SparseM")
> Loading required package: boot
>> library(maptools)
>> sessionInfo()
> R version 2.4.0 (2006-10-03)
> i386-apple-darwin8.8.1
>
> locale:
> es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/es_ES.UTF-8
>
> attached base packages:
> [1] "methods" "stats" "graphics" "grDevices" "utils"
> "datasets" "base"
>
> other attached packages:
> spdep boot SparseM maptools sp foreign tripack
> "0.3-32" "1.2-26" "0.71" "0.6-3" "0.9-4" "0.8-17" "1.2-10"
>
>> district.shp <-
> read.shape("~/Documents/SAHSU/MD/data/Carthography/districts_ok.shp")
> Shapefile type: Polygon, (5), # of Shapes: 354
>> district.shp <- read.shape("~/Documents/SAHSU/MD/data/Carthography/
> districts_ok.shp")
> Shapefile type: Polygon, (5), # of Shapes: 354
>> plot(district.shp)
>
> *** caught segfault ***
> address 0xc00006d5, cause 'memory not mapped'
>
> Traceback:
> 1: polygon(theMap$Shapes[[ii]]$verts, col = fg[i], border =
> ol, ...)
> 2: plot.Map(district.shp)
> 3: plot(district.shp)
> 4: plot(district.shp)
>
> Possible actions:
> 1: abort (with core dump)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
> I saw that plot.Map is deprecated, so I converted the shapefile into
> a polygon list, and then tried to plot it, but still got the error:
>
>> library(spdep)
> Loading required package: tripack
> Loading required package: maptools
> Loading required package: foreign
> Loading required package: sp
> Loading required package: SparseM
> Package SparseM (0.71) loaded. To cite, see citation("SparseM")
> Loading required package: boot
>> library(maptools)
>> district.shp <- read.shape("~/Documents/SAHSU/MD/data/Carthography/
> districts_ok.shp")
> Shapefile type: Polygon, (5), # of Shapes: 354
>> district.pl <- Map2poly(district.shp, as.character(district.shp$att
> $DISTRICT_2))
>> plot(district.pl)
>
> *** caught segfault ***
> address 0xc0000165, cause 'memory not mapped'
>
> Traceback:
> 1: polygon(coords[pFrom[i]:pTo[i], ], border = border, xpd = xpd,
> density = density, angle = angle)
> 2: polygonholes(x[[j]], border = border, xpd = xpd, density = density
> [j], angle = angle[j], pbg = pbg, forcefill = forcefill)
> 3: plot.polylist(district.pl)
> 4: plot(district.pl)
> 5: plot(district.pl)
>
> Possible actions:
> 1: abort (with core dump)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
>
> I also get the same error when I use library shapefiles to import the
> shp file and then try to plot the polygons myself; these are the
> commands I run:
>
>> library(shapefiles)
>> districts.shp <- read.shapefile("~/Documents/SAHSU/MD/data/
> carthography/districts_ok")
>
> Attaching package: 'foreign'
>
>
> The following object(s) are masked from package:shapefiles :
>
> read.dbf
>
> The following object(s) are masked from package:shapefiles :
>
> write.dbf
>
>> ndistricts <- length(districts.shp$shp$shp)
>> keys <- districts.shp$dbf$dbf$DISTRICT_2
>> vertices <- list()
>> for(i in 1:ndistricts){
> + vertices[[i]] <- districts.shp$shp$shp[[i]]$points
> + }
>>
>> districts.map <- list(codigo=keys, vertices=vertices)#,
> nombre=wardnames)
>>
>> xymin <- apply(t(sapply(districts.map$vertices, apply, 2, min)), 2,
> min)
>> xymax <- apply(t(sapply(districts.map$vertices, apply, 2, max)), 2,
> max)
>> corners <- expand.grid(xymin, xymax)
>>
>> # Plotting the corners and then adding polygons one by one.
>> par(pty="s")
>> plot(rbind(xymin, xymax), type="n")
>> for (i in 1:ndistricts){
> + polygon(x=districts.map$vertices[[i]][,1],
> y=districts.map$vertices[[i]][,2])
> + }
>
> *** caught segfault ***
> address 0xc00009d8, cause 'memory not mapped'
>
> Traceback:
> 1: polygon(x = districts.map$vertices[[i]][, 1], y = districts.map
> $vertices[[i]][, 2])
>
> Possible actions:
> 1: abort (with core dump)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
> In all above cases, I can generate a postscript file though. I.e. the
> sequence of commands
>
>> districts.shp <-
> read.shape("~/Documents/SAHSU/MD/data/Carthography/districts_ok.shp")
> Shapefile type: Polygon, (5), # of Shapes: 354
>> postscript("~/Documents/SAHSU/MD/data/Carthography/districts_ok.eps")
>> plot(districts.shp)
> Warning message:
> 'plot.Map' is deprecated.
> Use 'plot.Spatial' instead.
> See help("Deprecated") and help("maptools-deprecated").
>> dev.off()
> null device
> 1
>
> works fine, and the postscript file with the map is created.
>
> The same commands work fine using R terminal instead of R.app. So the
> error only happens in R.app when generating the map to be seen on teh
> screen. They also work fine in my laptop (Intel Pentium 4 CPU 2.00
> GHz,
> with 512 MB RAM), where I use R v2.2.1 on Windows XP Home Edition
> v2002.
>
> A colleague of mine's reproduced the error using R.app on the
> following
> machine:
>
> System Version: Mac OS X 10.4.8 (8N1051)
> Kernel Version: Darwin 8.8.2
> Hardware Overview:
> Machine Name: Mac
> Machine Model: MacBookPro2,2
> Processor Name: Intel Core 2 Duo
> Processor Speed: 2.33 GHz
> Number Of Processors: 1
> Total Number Of Cores: 2
> L2 Cache (per processor): 4 MB
> Memory: 2 GB
> Bus Speed: 667 MHz
>
>
>> sessionInfo()
> R version 2.4.0 (2006-10-03)
> i386-apple-darwin8.8.1
>
> locale:
> en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
>
> attached base packages:
> [1] "methods" "stats" "graphics" "grDevices" "utils"
> [6] "datasets" "base"
>
> other attached packages:
> spdep boot SparseM maptools sp foreign tripack
> "0.3-32" "1.2-26" "0.71" "0.6-3" "0.9-4" "0.8-17" "1.2-10"
>
>
>
> The offending shapefile was generated with ArcGIS 9.0 running on
> Windows
> XP. It
> can be can be found in www.uv.es/~abellan/districts_ok.zip.
>
> Any ideas of what may cause the error?
>
> Many thanks,
>
> Juanjo Abellan
> Research Associate in Statistics
> Department of Epidemiology and Public Health
> Imperial College London
More information about the R-SIG-Mac
mailing list