On 30/12/2009 9:20 AM, Nick Torenvliet wrote:> I got the following after running succesfully through this loop 28 million
> times... the loop opens text files in a directory and inserts line by line
> into a database...
>
This looks like a bug in RMySql or possibly R. What versions are you
using? Can you make it happen reproducibly with the same script? Can
you simplify the script so it happens quickly, rather than requiring 28
million iterations? Without a simple recipe to reproduce it, I doubt if
anyone would be able to track down the problem.
Duncan Murdoch> *** caught segfault ***
> address 0xc0000010, cause 'memory not mapped'
>
> Traceback:
> 1: .getGeneric(f, where, package)
> 2: getGeneric("coerce", where = where)
> 3: as(obj, "integer")
> 4: mysqlConnectionInfo(dbObj, ...)
> 5: dbGetInfo(conn, "rsId")
> 6: dbGetInfo(conn, "rsId")
> 7: dbListResults(con)
> 8: dbListResults(con)
> 9: mysqlQuickSQL(conn, statement, ...)
> 10: dbGetQuery(con, sql)
> 11: dbGetQuery(con, sql)
> 12: doTryCatch(return(expr), name, parentenv, handler)
> 13: tryCatchOne(expr, names, parentenv, handlers[[1L]])
> 14: tryCatchList(expr, classes, parentenv, handlers)
> 15: tryCatch(expr, error = function(e) { call <- conditionCall(e)
if
> (!is.null(call)) { if (identical(call[[1L]],
> quote(doTryCatch))) call <- sys.call(-4L) dcall <-
> deparse(call)[1L] prefix <- paste("Error in", dcall,
": ")
> LONG <- 75L msg <- conditionMessage(e) sm <-
strsplit(msg,
> "\n")[[1L]] if (14L + nchar(dcall, type = "w") +
nchar(sm[1L], type > "w") > LONG) prefix
<- paste(prefix, "\n ", sep > "") } else prefix
<- "Error : " msg <- paste(prefix,
> conditionMessage(e), "\n", sep = "")
.Internal(seterrmessage(msg[1L]))
> if (!silent &&
identical(getOption("show.error.messages"), TRUE))
> { cat(msg, file = stderr())
> .Internal(printDeferredWarnings()) } invisible(structure(msg, class
> "try-error"))})
> 16: try(dbGetQuery(con, sql))
> 17: eval.with.vis(expr, envir, enclos)
> 18: eval.with.vis(ei, envir)
> 19: source("~/SoothSayer/EODData/DBScripts/loadEODQuotes.r")
>
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection:
>
>
> The code is pretty simple...
>
>
> library(RMySQL)
> drv <- dbDriver("MySQL")
> con <- dbConnect(drv, host="localhost",
dbname="markets", user="root",
> pass="embryoni3")
> fileList <- list.files(pattern = "[[:upper:]]{2,}", all.files
= FALSE,
> full.names = FALSE, recursive = FALSE, ignore.case = FALSE)
> for (x in 1:length(fileList)){
> string <- strsplit(fileList[x], "_", fixed = TRUE)
> string <- string[[1]][1]
> fileLines <- read.csv(fileList[x],header = FALSE,row.names = NULL )
>
> for ( j in 1:length(fileLines[,1])){
> sql <- paste("insert into endOfDayData
> (date,market,symbol,open,high,low,close,volume) values ('",
>
fileLines[j,2],"','",string,"','",as.character(fileLines[j,1]),"','",fileLines[j,3],"','",fileLines[j,4],"','",fileLines[j
>
,5],"','",fileLines[j,6],"','",fileLines[j,7],"')",sep="")
> #print(sql)
> atmpt <- try(dbGetQuery(con,sql))
> options(show.error.messages = TRUE)
> if(inherits(atmpt, "try-error")){
>
> }
>
> }
>
> }
>
> dbDisconnect(con)
>
> My understanding was that in general R liked to put a placekeeper like NA
or
> NULL in for non-existent elements of defined structures... so I was
> surprised to see a seg fault... I'm having trouble interpretting the
> error... any clues would be appreciated.
>
> Nick
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>