crash on multiple queries to postgresql db
On Friday 09 January 2009, Joe Conway wrote:
Dylan Beaudette wrote:
Subsequent calls to: conn <- dbConnect(PgSQL(), host="localhost", dbname="xxx", user="xxx") query <- dbSendQuery(conn, query_text) res <- dbGetResult(query) are resulting in this: *** glibc detected *** /usr/local/lib/R/bin/exec/R: realloc(): invalid other attached packages: [1] RdbiPgSQL_1.8.0 Rdbi_1.8.0 lattice_0.17-20 Any ideas?
Well, first off, since you are apparently using RdbiPgSQL from bioconductor, you should probably try asking there. But in any case, you might try the latest release from bioconductor: http://www.bioconductor.org/packages/release/bioc/src/contrib/RdbiPgSQL_1.1 6.0.tar.gz or else try the recently released PostgreSQL DBI package on CRAN: http://cran.stat.ucla.edu/src/contrib/RPostgreSQL_0.1-3.tar.gz HTH, Joe
Thanks Joe. I have updated all of my R packages, along with my Bioconductor
packages... and I still get the odd behavior:
*** glibc detected *** /usr/local/lib/R/bin/exec/R: realloc(): invalid old
size: 0xb7dad1e0 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7cc3624]
/lib/i686/cmov/libc.so.6[0xb7cc71a1]
/lib/i686/cmov/libc.so.6(realloc+0x106)[0xb7cc7b46]
/usr/local/pgsql/lib/libpq.so.5[0xb7802166]
/usr/local/pgsql/lib/libpq.so.5[0xb780239c]
/usr/local/pgsql/lib/libpq.so.5[0xb77fbd31]
/usr/local/pgsql/lib/libpq.so.5(PQfinish+0x15)[0xb77fbe85]
/usr/local/lib/R/site-library/RdbiPgSQL/libs/RdbiPgSQL.so(PgSQLcloseConnection+0x38)
[0xb783bb98]
Again, here is my session info:
R version 2.8.0 (2008-10-20)
i686-pc-linux-gnu
locale:
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] RdbiPgSQL_1.16.0 Rdbi_1.16.0 lattice_0.17-20
Here is the code that appears to be causing the problems:
# load data from a PostGreSQL database, and return a dataframe
# this will get called whenever the parent function is called
# crashes after 3-5 subsequent calls
load_sensor_data <- function(query_text)
{
# conn becomes an object which contains the DB connection:
conn <- dbConnect(PgSQL(), host="localhost", dbname="SJER", user="dylan")
## pre-filter out possible bad data:
query <- dbSendQuery(conn, query_text)
# fetch data according to query:
res <- dbGetResult(query)
# convert characters to factors
res <- transform(res, probe_id = factor(probe_id))
res <- transform(res, pedon_id = factor(pedon_id))
# generate a new date-time object in the dataframe
res$date <- as.POSIXct(strptime(res$date_time, format="%a %b %e %H:%M:%S %Y"))
# cleanup
dbDisconnect(conn)
# doesn't completely fix problem crashing
gc()
# return the resulting dataframe
return(res)
}
Thanks in advance,
Dylan
Dylan Beaudette Soil Resource Laboratory http://casoilresource.lawr.ucdavis.edu/ University of California at Davis 530.754.7341