###########################The problem
I can not provide a reduced example because I do not know where the problem is. So I give you the entire database and e few lines where the problem appears. Few months ago I worked perfectly with the same database.
The database have 1.3 GB (1,345,078,529 bytes)
The file database is "4636.txt" or "here"
library(data.table)
data <- fread("4636.txt", header = T, sep = "\t", dec = ".", quote = "", data.table = T)
tables()
It produces the following message:
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: structure(.Call(C_objectSize, x), class = "object_size")
2: object.size(DT)
3: set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2))
4: FUN(X[[i]], ...)
5: lapply(DT_names, function(dt_n) { DT = get(dt_n, envir = env) info_i = data.table(NAME = dt_n, NROW = nrow(DT), NCOL = ncol(DT)) if (mb) set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2)) set(info_i, , "COLS", list(list(names(DT)))) set(info_i, , "KEY", list(list(key(DT)))) if (index) set(info_i, , "INDICES", list(list(indices(DT)))) info_i})
6: rbindlist(lapply(DT_names, function(dt_n) { DT = get(dt_n, envir = env) info_i = data.table(NAME = dt_n, NROW = nrow(DT), NCOL = ncol(DT)) if (mb) set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2)) set(info_i, , "COLS", list(list(names(DT)))) set(info_i, , "KEY", list(list(key(DT)))) if (index) set(info_i, , "INDICES", list(list(indices(DT)))) info_i}))
7: tables()
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
###########################Output of sessionInfo()
sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.5 LTS
Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.6.0
LAPACK: /usr/lib/lapack/liblapack.so.3.6.0
locale:
[1] LC_CTYPE=es_AR.UTF-8 LC_NUMERIC=C
[3] LC_TIME=es_AR.UTF-8 LC_COLLATE=es_AR.UTF-8
[5] LC_MONETARY=es_AR.UTF-8 LC_MESSAGES=es_AR.UTF-8
[7] LC_PAPER=es_AR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=es_AR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.12.0
loaded via a namespace (and not attached):
[1] compiler_3.5.2 tools_3.5.2
###########################But I also try with:
- Ubuntu 16.04, R 3.4.4, data.table v. 1.12.0
- Ubuntu 16.04, R 3.5.2, data.table v. 1.11.0
- Ubuntu 16.04, R 3.5.2, data.table v. 1.11.4
- Ubuntu 18.04, R 3.4.4, data.table v. 1.12.0
- Windows 10, R 3.5.2, data.table v. 1.12.0
###########################
When I ran the same script on valgrind I obtain:
library(data.table)
data <- fread("4636.txt", header = T, sep = "\t", dec = ".", quote = "", data.table = T)
==8341== Warning: set address range perms: large range [0x395d8000, 0x8989d000) (defined)
|--------------------------------------------------|
|==================================================|
|--------------------------------------------------|
|===================================================8341== Thread 4:
==8341== Invalid write of size 4
==8341== at 0xD59A949: memcpy (string3.h:53)
==8341== by 0xD59A949: pushBuffer (freadR.c:460)
==8341== by 0xD59090B: freadMain._omp_fn.0 (fread.c:2312)
==8341== by 0x6F2A43D: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==8341== by 0x54B56B9: start_thread (pthread_create.c:333)
==8341== by 0x57D241C: clone (clone.S:109)
==8341== Address 0xa4037f20 is 0 bytes after a block of size 10,563,296 alloc'd
==8341== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8341== by 0x4FA65EC: Rf_allocVector3 (in /usr/lib/R/lib/libR.so)
==8341== by 0xD598CF3: allocateDT (freadR.c:362)
==8341== by 0xD597E53: freadMain (fread.c:2380)
==8341== by 0xD5998B7: freadR (freadR.c:180)
==8341== by 0x4F27605: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F27D7C: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61867: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B760: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6FB23: ??? (in /usr/lib/R/lib/libR.so)
==8341==
=|
==8341== Warning: set address range perms: large range [0x395d8000, 0x8989d000) (noaccess)
Warning message:
In fread("4636.txt", header = T, sep = "\t", dec = ".", quote = "", : Found and resolved improper quoting out-of-sample. First healed line 2640814: <<Atkin Owen 286 Global Respiration Database Acacia boriensis 200160 Acacia boboensis 2460341 23503718 40 Leaf photosynthesis rate per leaf dry mass 45 Photosynthesis per leaf dry mass (Amass) Am_sat 0.148726655348048 micro mol g-1 s-1 1.27766 Atkin OK, KJ Bloomfield, PB Reich, MG Tjoelker, GP Asner, D Bonal, G B�nisch, M Bradford, LA Cernusak, EG Cosio, D Creek, KY Crous, T Domingues, JS Dukes, JJG Egerton, JR Evans, GD Farquhar, NM Fyllas, PPG Gauthier, E Gloor, TE Gimeno, K. Griffin, R >>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote="" to avoid this warning.
tables()
==8341== Thread 1:
==8341== Invalid read of size 8
==8341== at 0x4FA2B0E: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4FA619C: Rf_allocVector3 (in /usr/lib/R/lib/libR.so)
==8341== by 0x5035A98: Rf_csduplicated (in /usr/lib/R/lib/libR.so)
==8341== by 0xACC82D7: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC874E: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC8DB5: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0x4F61E50: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6BEF8: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6C3F7: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61AB6: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== Address 0xa86bcdd0 is 0 bytes after a block of size 21,126,544 alloc'd
==8341== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8341== by 0x4FA65EC: Rf_allocVector3 (in /usr/lib/R/lib/libR.so)
==8341== by 0xD581B01: growVector (dogroups.c:487)
==8341== by 0xD598DB7: allocateDT (freadR.c:362)
==8341== by 0xD597E53: freadMain (fread.c:2380)
==8341== by 0xD5998B7: freadR (freadR.c:180)
==8341== by 0x4F27605: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F27D7C: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61867: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B760: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341==
==8341== Invalid read of size 8
==8341== at 0x502E4D9: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x502DEEA: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x5035B4D: Rf_csduplicated (in /usr/lib/R/lib/libR.so)
==8341== by 0xACC82D7: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC874E: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC8DB5: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0x4F61E50: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6BEF8: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6C3F7: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61AB6: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== Address 0x980cedd0 is 0 bytes after a block of size 21,126,544 alloc'd
==8341== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8341== by 0x4FA65EC: Rf_allocVector3 (in /usr/lib/R/lib/libR.so)
==8341== by 0xD581B01: growVector (dogroups.c:487)
==8341== by 0xD598DB7: allocateDT (freadR.c:362)
==8341== by 0xD597E53: freadMain (fread.c:2380)
==8341== by 0xD5998B7: freadR (freadR.c:180)
==8341== by 0x4F27605: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F27D7C: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61867: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B760: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341==
==8341== Invalid read of size 8
==8341== at 0xACC8658: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC874E: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC8DB5: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0x4F61E50: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6BEF8: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6C3F7: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61AB6: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F62E46: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== Address 0x980cedd0 is 0 bytes after a block of size 21,126,544 alloc'd
==8341== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8341== by 0x4FA65EC: Rf_allocVector3 (in /usr/lib/R/lib/libR.so)
==8341== by 0xD581B01: growVector (dogroups.c:487)
==8341== by 0xD598DB7: allocateDT (freadR.c:362)
==8341== by 0xD597E53: freadMain (fread.c:2380)
==8341== by 0xD5998B7: freadR (freadR.c:180)
==8341== by 0x4F27605: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F27D7C: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61867: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B760: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341==
==8341== Invalid read of size 1
==8341== at 0xACC80C1: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC8A57: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC874E: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0xACC8DB5: ??? (in /usr/lib/R/library/utils/libs/utils.so)
==8341== by 0x4F61E50: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6BEF8: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6C3F7: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F61AB6: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6B7AF: Rf_eval (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F6D110: ??? (in /usr/lib/R/lib/libR.so)
==8341== by 0x4F62E46: ??? (in /usr/lib/R/lib/libR.so)
==8341== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==8341==
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: structure(.Call(C_objectSize, x), class = "object_size")
2: object.size(DT)
3: set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2))
4: FUN(X[[i]], ...)
5: lapply(DT_names, function(dt_n) { DT = get(dt_n, envir = env) info_i = data.table(NAME = dt_n, NROW = nrow(DT), NCOL = ncol(DT)) if (mb) set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2)) set(info_i, , "COLS", list(list(names(DT)))) set(info_i, , "KEY", list(list(key(DT)))) if (index) set(info_i, , "INDICES", list(list(indices(DT)))) info_i})
6: rbindlist(lapply(DT_names, function(dt_n) { DT = get(dt_n, envir = env) info_i = data.table(NAME = dt_n, NROW = nrow(DT), NCOL = ncol(DT)) if (mb) set(info_i, , "MB", round(as.numeric(object.size(DT))/1024^2)) set(info_i, , "COLS", list(list(names(DT)))) set(info_i, , "KEY", list(list(key(DT)))) if (index) set(info_i, , "INDICES", list(list(indices(DT)))) info_i}))
7: tables()
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
###########################The problem
I can not provide a reduced example because I do not know where the problem is. So I give you the entire database and e few lines where the problem appears. Few months ago I worked perfectly with the same database.
The database have 1.3 GB (1,345,078,529 bytes)
The file database is "4636.txt" or "here"
library(data.table)data <- fread("4636.txt", header = T, sep = "\t", dec = ".", quote = "", data.table = T)tables()It produces the following message:
###########################Output of sessionInfo()
sessionInfo()###########################But I also try with:
###########################
When I ran the same script on valgrind I obtain:
library(data.table)data <- fread("4636.txt", header = T, sep = "\t", dec = ".", quote = "", data.table = T)tables()