Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local installation of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurity/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated. Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################################## ############################################################################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################################## ############################################################################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1 ERROR *** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>, info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer: 0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: .fun(piece, ...) 11: (function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(utils::capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res})(2L) 12: .Call(loop_apply_, as.integer(n), f, env) 13: loop_apply(n, do.ply) 14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x) scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)) 23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options)) 25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options))) 26: block_exec(params) 27: call_block(x) 28: process_group.block(group) 29: process_group(group) 30: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { setwd(wd) cat(res, sep = "\n", file = output %n% "") message("Quitting from lines ", paste(current_lines(i), collapse = "-"), " (", knit_concord$get("infile"), ") ") }) 31: process_file(text, output) 32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet, encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv()) 34: vweave_rmarkdown(...) 35: engine$weave(file, quiet = quiet, encoding = enc) 36: doTryCatch(return(expr), name, parentenv, handler) 37: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 38: tryCatchList(expr, classes, parentenv, handlers) 39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) find_vignette_product(name, by = "weave", engine = engine)}, error = function(e) { stop(gettextf("processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)), domain = NA, call. = FALSE)}) 40: tools::buildVignettes(dir = ".", tangle = TRUE) An irrecoverable exception occurred. R is aborting now ...
[Bioc-devel] msPurity build fail on Mac OS X (morelia)
11 messages · Martin Morgan, Dan Tenenbaum, Kasper Daniel Hansen +2 more
1 day later
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local installation of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurity/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia-R-instpkgs.html (linked from http://bioconductor.org/checkResults/3.4/bioc-LATEST/index.html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it is likely due to errors in C code of one sort or another. On my linux, I made sure I was using the 'devel' version of Bioconductor, and that all of my packages were up-to-date via biocLite(). I then checked out msPurity from svn, changed into the msPurity directory and installed it R CMD INSTALL . then I changed to the vignettes directory, Stangled the source code cd vignettes R CMD Stangle msPurity-vignette.Rmd (by the way, the products of build the package / vignette, msPurity-vignette.R should not be in svn). I then ran the vignette under valgrind msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R leading to > pa <- purityA(msmsPths) ==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool) (cramp.cpp:98) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400 alloc'd ==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool) (cramp.cpp:97) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual.rudefn means that memory allocated with new[] is being deallocated with free (rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind problem Index: src/cramp.cpp =================================================================== --- src/cramp.cpp (revision 121179) +++ src/cramp.cpp (working copy) @@ -95,7 +95,7 @@ // if (m_runInfo->m_data.scanCount < 0) { // undeclared scan count // this will provoke reading of index, which sets scan count rampScanInfo* tmp = getScanHeaderInfo ( 1 ); - free(tmp); + delete(tmp); // } // END HENRY } but doesn't get us out of the woods -- valgrind now complains > > xset <- xcms::xcmsSet(msmsPths) vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if that is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one of the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################################## ############################################################################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################################## ############################################################################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1 ERROR *** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>, info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer: 0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: .fun(piece, ...) 11: (function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(utils::capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res})(2L) 12: .Call(loop_apply_, as.integer(n), f, env) 13: loop_apply(n, do.ply) 14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x) scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)) 23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options)) 25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options))) 26: block_exec(params) 27: call_block(x) 28: process_group.block(group) 29: process_group(group) 30: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { setwd(wd) cat(res, sep = "\n", file = output %n% "") message("Quitting from lines ", paste(current_lines(i), collapse = "-"), " (", knit_concord$get("infile"), ") ") }) 31: process_file(text, output) 32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet, encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv()) 34: vweave_rmarkdown(...) 35: engine$weave(file, quiet = quiet, encoding = enc) 36: doTryCatch(return(expr), name, parentenv, handler) 37: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 38: tryCatchList(expr, classes, parentenv, handlers) 39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) find_vignette_product(name, by = "weave", engine = engine)}, error = function(e) { stop(gettextf("processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)), domain = NA, call. = FALSE)}) 40: tools::buildVignettes(dir = ".", tangle = TRUE) An irrecoverable exception occurred. R is aborting now ... [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or...{{dropped:2}}
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will test a few things out with valgrind and hopefully I can pinpoint the error a bit more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan <
martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local installation of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkResults/3.4/bioc-LATEST/index. html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it is likely due to errors in C code of one sort or another. On my linux, I made sure I was using the 'devel' version of Bioconductor, and that all of my packages were up-to-date via biocLite(). I then checked out msPurity from svn, changed into the msPurity directory and installed it R CMD INSTALL . then I changed to the vignettes directory, Stangled the source code cd vignettes R CMD Stangle msPurity-vignette.Rmd (by the way, the products of build the package / vignette, msPurity-vignette.R should not be in svn). I then ran the vignette under valgrind msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool) (cramp.cpp:98) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400 alloc'd ==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool) (cramp.cpp:97) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual.rudefn means that memory allocated with new[] is being deallocated with free (rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind problem Index: src/cramp.cpp =================================================================== --- src/cramp.cpp (revision 121179) +++ src/cramp.cpp (working copy) @@ -95,7 +95,7 @@ // if (m_runInfo->m_data.scanCount < 0) { // undeclared scan count // this will provoke reading of index, which sets scan count rampScanInfo* tmp = getScanHeaderInfo ( 1 ); - free(tmp); + delete(tmp); // } // END HENRY } but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if that is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one of the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################ ################## ############################################################ ################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1 ERROR *** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/ library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>, info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer: 0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: .fun(piece, ...) 11: (function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(utils::capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res})(2L) 12: .Call(loop_apply_, as.integer(n), f, env) 13: loop_apply(n, do.ply) 14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x) scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)) 23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options)) 25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options))) 26: block_exec(params) 27: call_block(x) 28: process_group.block(group) 29: process_group(group) 30: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { setwd(wd) cat(res, sep = "\n", file = output %n% "") message("Quitting from lines ", paste(current_lines(i), collapse = "-"), " (", knit_concord$get("infile"), ") ") }) 31: process_file(text, output) 32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet, encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv()) 34: vweave_rmarkdown(...) 35: engine$weave(file, quiet = quiet, encoding = enc) 36: doTryCatch(return(expr), name, parentenv, handler) 37: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 38: tryCatchList(expr, classes, parentenv, handlers) 39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) find_vignette_product(name, by = "weave", engine = engine)}, error = function(e) { stop(gettextf("processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)), domain = NA, call. = FALSE)}) 40: tools::buildVignettes(dir = ".", tangle = TRUE) An irrecoverable exception occurred. R is aborting now ... [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or confidential information. If you are not the intended recipient(s), or the employee or agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------------------ library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML", package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML", package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------------------ pa <- purityA(msmsPths)
*** caught segfault ***
address 0x29800000297, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>, info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer: 0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: getscans(filepth)
11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP = plotP, plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun = iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if (obj$verbose) { cat(sprintf("evaluation # %d:\n", i)) print(args) } for (a in names(args)) assign(a, args[[a]], pos = envir, inherits = FALSE) r <- tryCatch(eval(xpr, envir = envir), error = function(e) e) if (obj$verbose) { cat("result of evaluating expression:\n") print(r) } tryCatch(accumulator(list(r), i), error = function(e) { cat("error calling combine function:\n") print(e) NULL }) i <- i + 1 }}, error = function(e) { if (!identical(conditionMessage(e), "StopIteration")) stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages = "mzR"), assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP = plotP, plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will test a few things out with valgrind and hopefully I can pinpoint the error a bit more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local installation of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkResults/3.4/bioc-LATEST/index. html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it is likely due to errors in C code of one sort or another. On my linux, I made sure I was using the 'devel' version of Bioconductor, and that all of my packages were up-to-date via biocLite(). I then checked out msPurity from svn, changed into the msPurity directory and installed it R CMD INSTALL . then I changed to the vignettes directory, Stangled the source code cd vignettes R CMD Stangle msPurity-vignette.Rmd (by the way, the products of build the package / vignette, msPurity-vignette.R should not be in svn). I then ran the vignette under valgrind msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool) (cramp.cpp:98) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400 alloc'd ==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool) (cramp.cpp:97) ==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char const*, bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:215) ==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke_void(SEXPREC*, SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual.rudefn means that memory allocated with new[] is being deallocated with free (rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind problem Index: src/cramp.cpp =================================================================== --- src/cramp.cpp (revision 121179) +++ src/cramp.cpp (working copy) @@ -95,7 +95,7 @@ // if (m_runInfo->m_data.scanCount < 0) { // undeclared scan count // this will provoke reading of index, which sets scan count rampScanInfo* tmp = getScanHeaderInfo ( 1 ); - free(tmp); + delete(tmp); // } // END HENRY } but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if that is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one of the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################ ################## ############################################################ ################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1 ERROR *** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/ library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>, info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer: 0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: .fun(piece, ...) 11: (function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(utils::capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res})(2L) 12: .Call(loop_apply_, as.integer(n), f, env) 13: loop_apply(n, do.ply) 14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x) scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)) 23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options)) 25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options))) 26: block_exec(params) 27: call_block(x) 28: process_group.block(group) 29: process_group(group) 30: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { setwd(wd) cat(res, sep = "\n", file = output %n% "") message("Quitting from lines ", paste(current_lines(i), collapse = "-"), " (", knit_concord$get("infile"), ") ") }) 31: process_file(text, output) 32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet, encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv()) 34: vweave_rmarkdown(...) 35: engine$weave(file, quiet = quiet, encoding = enc) 36: doTryCatch(return(expr), name, parentenv, handler) 37: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 38: tryCatchList(expr, classes, parentenv, handlers) 39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) find_vignette_product(name, by = "weave", engine = engine)}, error = function(e) { stop(gettextf("processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)), domain = NA, call. = FALSE)}) 40: tools::buildVignettes(dir = ".", tangle = TRUE) An irrecoverable exception occurred. R is aborting now ... [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or confidential information. If you are not the intended recipient(s), or the employee or agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
So this seems like a bug in mzR which is the main backend / parser for proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are written by other people, but bundled with the package. Martin's traceback suggests that some of these files are (partially?) encrypted. This might be hard to address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <dtenenba at fredhutch.org> wrote:
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault ***
address 0x29800000297, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer:
0x7fb56861cb10>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>,
info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer:
0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: getscans(filepth)
11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun =
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a, args[[a]], pos
= envir, inherits = FALSE) r <- tryCatch(eval(xpr, envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r) }
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages =
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will test a few things out with valgrind and hopefully I can pinpoint the error a bit more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkResults/3.4/bioc-LATEST/index
.
html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it
is
likely due to errors in C code of one sort or another. On my linux, I
made
sure I was using the 'devel' version of Bioconductor, and that all of my packages were up-to-date via biocLite(). I then checked out msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::
invoke_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::
invoke_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-
manual.rudefn
means that memory allocated with new[] is being deallocated with free
(rather than delete / delete[]
Remarkably, this change to mzR removes this particular valgind problem
Index: src/cramp.cpp
===================================================================
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { // undeclared
scan
count
// this will provoke reading of index, which sets scan count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one of the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/bin/R CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################ ################## ############################################################ ################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla --default-packages= -e "tools::buildVignettes(dir = '.', tangle = TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1 ERROR *** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/Resources/ library/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>, info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer: 0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: .fun(piece, ...) 11: (function (i) { piece <- pieces[[i]] if (.inform) { res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) { piece <- paste(utils::capture.output(print(piece)), collapse = "\n") stop("with piece ", i, ": \n", piece, call. = FALSE) } } else { res <- .fun(piece, ...) } progress$step() res})(2L) 12: .Call(loop_apply_, as.integer(n), f, env) 13: loop_apply(n, do.ply) 14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress, .inform = .inform, .parallel = .parallel, .paropts = .paropts) 15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x) scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)) 23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning, keep_message = keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options)) 25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message), stop_on_error = if (options$error && options$include) 0L else 2L, output_handler = knit_handlers(options$render, options))) 26: block_exec(params) 27: call_block(x) 28: process_group.block(group) 29: process_group(group) 30: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { setwd(wd) cat(res, sep = "\n", file = output %n% "") message("Quitting from lines ", paste(current_lines(i), collapse = "-"), " (", knit_concord$get("infile"), ") ") }) 31: process_file(text, output) 32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet, encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv()) 34: vweave_rmarkdown(...) 35: engine$weave(file, quiet = quiet, encoding = enc) 36: doTryCatch(return(expr), name, parentenv, handler) 37: tryCatchOne(expr, names, parentenv, handlers[[1L]]) 38: tryCatchList(expr, classes, parentenv, handlers) 39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) find_vignette_product(name, by = "weave", engine = engine)}, error = function(e) { stop(gettextf("processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)), domain = NA, call. = FALSE)}) 40: tools::buildVignettes(dir = ".", tangle = TRUE) An irrecoverable exception occurred. R is aborting now ... [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or confidential information. If you are not the intended recipient(s), or the employee
or
agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Hi All,
Thanks for the help with this. I have been using valgrind to try and
pinpoint in my code the problem and it seems to be from mzR::openMSfile().
A simplified bit of code just using mzR I think will give the same results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think). e.g. #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR with a default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that the server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this correct? On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen <
kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser for proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are written by other people, but bundled with the package. Martin's traceback suggests that some of these files are (partially?) encrypted. This might be hard to address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <dtenenba at fredhutch.org> wrote:
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault ***
address 0x29800000297, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>,
info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer:
0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: getscans(filepth)
11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun =
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a, args[[a]], pos
= envir, inherits = FALSE) r <- tryCatch(eval(xpr, envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r) }
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages =
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will test
a
few things out with valgrind and hopefully I can pinpoint the error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it
is
likely due to errors in C code of one sort or another. On my linux, I
made
sure I was using the 'devel' version of Bioconductor, and that all of
my
packages were up-to-date via biocLite(). I then checked out msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual.
rudefn
means that memory allocated with new[] is being deallocated with free
(rather than delete / delete[]
Remarkably, this change to mzR removes this particular valgind problem
Index: src/cramp.cpp
===================================================================
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { // undeclared
scan
count
// this will provoke reading of index, which sets scan count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity
###
############################################################
##################
############################################################
##################
* checking for file ?msPurity/DESCRIPTION? ... OK
* preparing ?msPurity?:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ...sh: line 1: 62889 Segmentation fault: 11
'/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle =
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ": \n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)})
16: getscans(filepths)
17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2))
18: eval(expr, envir, enclos)
19: eval(expr, envir, enclos)
20: withVisible(eval(expr, envir, enclos))
21: withCallingHandlers(withVisible(eval(expr, envir, enclos)),
warning = wHandler, error = eHandler, message = mHandler)
22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
enclos)), warning = wHandler, error = eHandler, message = mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos =
enclos, debug = debug, last = i == length(out), use_try =
stop_on_error != 2L, keep_warning = keep_warning, keep_message
= keep_message, output_handler = output_handler)
24: evaluate(code, envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "") message("Quitting
from lines ", paste(current_lines(i), collapse = "-"), "
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet,
encoding = encoding)
33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc)
setwd(startdir) find_vignette_product(name, by = "weave", engine =
engine)}, error = function(e) { stop(gettextf("processing vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or confidential information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
On 22 September 2016 14:12, Thomas Lawson wrote:
Hi All, Thanks for the help with this. I have been using valgrind to try and pinpoint in my code the problem and it seems to be from mzR::openMSfile().
I can't reproduce this:
library(mzR)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML", package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msmsPths
[1] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/msPurityData/extdata/lcms/mzML/LCMSMS_1.mzML" [2] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/msPurityData/extdata/lcms/mzML/LCMSMS_2.mzML"
tmp <- replicate(1000, mr <- mzR::openMSfile(msmsPths[1])) all(sapply(tmp, validObject))
[1] TRUE
sessionInfo()
R version 3.3.1 Patched (2016-08-02 r71022) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.5 LTS locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mzR_2.7.4 Rcpp_0.12.7 loaded via a namespace (and not attached): [1] ProtGenerics_1.5.1 tools_3.3.1 parallel_3.3.1 [4] Biobase_2.33.3 codetools_0.2-14 BiocGenerics_0.19.2 What are your mzR and Rcpp versions? Also, in your code, you will need to explicitly close(mz) after opening a connection to the raw data file. Otherwise, you might end up getting 'Error: failed opening file: Too many open files'. (This is not the reason for your error). Laurent
A simplified bit of code just using mzR I think will give the same results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think). e.g. #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR with a default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that the server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this correct? On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen < kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser for proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are written by other people, but bundled with the package. Martin's traceback suggests that some of these files are (partially?) encrypted. This might be hard to address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <dtenenba at fredhutch.org> wrote:
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault ***
address 0x29800000297, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>,
info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer:
0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: getscans(filepth)
11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun =
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a, args[[a]], pos
= envir, inherits = FALSE) r <- tryCatch(eval(xpr, envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r) }
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages =
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]], mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP = plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will test
a
few things out with valgrind and hopefully I can pinpoint the error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*) and Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line 10 https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting the error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is installed. Also, segfaults are rarely the result of missing packages. Instead, it
is
likely due to errors in C code of one sort or another. On my linux, I
made
sure I was using the 'devel' version of Bioconductor, and that all of
my
packages were up-to-date via biocLite(). I then checked out msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**) (Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual.
rudefn
means that memory allocated with new[] is being deallocated with free
(rather than delete / delete[]
Remarkably, this change to mzR removes this particular valgind problem
Index: src/cramp.cpp
===================================================================
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { // undeclared
scan
count
// this will provoke reading of index, which sets scan count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity
###
############################################################
##################
############################################################
##################
* checking for file ?msPurity/DESCRIPTION? ... OK
* preparing ?msPurity?:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ...sh: line 1: 62889 Segmentation fault: 11
'/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle =
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L), <pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res, "try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ": \n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)})
16: getscans(filepths)
17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2))
18: eval(expr, envir, enclos)
19: eval(expr, envir, enclos)
20: withVisible(eval(expr, envir, enclos))
21: withCallingHandlers(withVisible(eval(expr, envir, enclos)),
warning = wHandler, error = eHandler, message = mHandler)
22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
enclos)), warning = wHandler, error = eHandler, message = mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos =
enclos, debug = debug, last = i == length(out), use_try =
stop_on_error != 2L, keep_warning = keep_warning, keep_message
= keep_message, output_handler = output_handler)
24: evaluate(code, envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(), evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "") message("Quitting
from lines ", paste(current_lines(i), collapse = "-"), "
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet,
encoding = encoding)
33: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc)
setwd(startdir) find_vignette_product(name, by = "weave", engine =
engine)}, error = function(e) { stop(gettextf("processing vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or confidential information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
Martin seemed to have fixed the original error, but recovered another one. Do we have a reproducible example with the other error (and did Martin's fix get into mzR) and do we know which platforms it fails on? Best, Kasper
On Thu, Sep 22, 2016 at 10:10 AM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 14:12, Thomas Lawson wrote:
Hi All, Thanks for the help with this. I have been using valgrind to try and pinpoint in my code the problem and it seems to be from
mzR::openMSfile(). I can't reproduce this:
library(mzR)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msmsPths
[1] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_1.mzML" [2] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_2.mzML"
tmp <- replicate(1000, mr <- mzR::openMSfile(msmsPths[1])) all(sapply(tmp, validObject))
[1] TRUE
sessionInfo()
R version 3.3.1 Patched (2016-08-02 r71022) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.5 LTS locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mzR_2.7.4 Rcpp_0.12.7 loaded via a namespace (and not attached): [1] ProtGenerics_1.5.1 tools_3.3.1 parallel_3.3.1 [4] Biobase_2.33.3 codetools_0.2-14 BiocGenerics_0.19.2 What are your mzR and Rcpp versions? Also, in your code, you will need to explicitly close(mz) after opening a connection to the raw data file. Otherwise, you might end up getting 'Error: failed opening file: Too many open files'. (This is not the reason for your error). Laurent
A simplified bit of code just using mzR I think will give the same
results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think).
e.g.
#----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR
with a
default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that
the
server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this correct? On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen < kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser for proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are
written
by other people, but bundled with the package. Martin's traceback
suggests
that some of these files are (partially?) encrypted. This might be
hard to
address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <dtenenba at fredhutch.org
wrote:
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault *** address 0x29800000297, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/
Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>, info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer: 0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: getscans(filepth) 11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP = plotP, plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun
=
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a,
args[[a]], pos
= envir, inherits = FALSE) r <- tryCatch(eval(xpr,
envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r) }
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages =
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]],
mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will
test
a
few things out with valgrind and hopefully I can pinpoint the error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*)
and
Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line
10
https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting
the
error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is
installed.
Also, segfaults are rarely the result of missing packages. Instead,
it
is
likely due to errors in C code of one sort or another. On my linux,
I
made
sure I was using the 'devel' version of Bioconductor, and that all
of
my
packages were up-to-date via biocLite(). I then checked out msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual
.
rudefn
means that memory allocated with new[] is being deallocated with
free
(rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind
problem
Index: src/cramp.cpp
===================================================================
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { //
undeclared
scan
count
// this will provoke reading of index, which sets scan
count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_
coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know
if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of
one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity
###
############################################################
##################
############################################################
##################
* checking for file ?msPurity/DESCRIPTION? ... OK
* preparing ?msPurity?:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ...sh: line 1: 62889 Segmentation fault: 11
'/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle =
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L),
<pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res,
"try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ": \n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)})
16: getscans(filepths)
17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2))
18: eval(expr, envir, enclos)
19: eval(expr, envir, enclos)
20: withVisible(eval(expr, envir, enclos))
21: withCallingHandlers(withVisible(eval(expr, envir, enclos)),
warning = wHandler, error = eHandler, message = mHandler)
22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
enclos)), warning = wHandler, error = eHandler, message =
mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning,
keep_message
= keep_message, output_handler = output_handler)
24: evaluate(code, envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(),
evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "")
message("Quitting
from lines ", paste(current_lines(i), collapse = "-"),
"
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet =
quiet,
encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet,
envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc)
setwd(startdir) find_vignette_product(name, by = "weave",
engine =
engine)}, error = function(e) { stop(gettextf("processing
vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or
confidential
information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you
have
received this message in error, please notify the sender
immediately by
e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
On 22 September 2016 15:22, Kasper Daniel Hansen wrote:
Martin seemed to have fixed the original error, but recovered another one. Do we have a reproducible example with the other error (and did Martin's fix get into mzR) and do we know which platforms it fails on?
I haven't updated mzR since this conversation started, so I haven't incorporated any of Martin's patches. I can't see anything in hedgehog's svn log - I have opened an issue on the mzR github repo in the meantime. Also, I can source my local msPurity/doc/msPurity-vignette.R file and it runs fine. Laurent [1] https://github.com/sneumann/mzR/issues/52
Best, Kasper On Thu, Sep 22, 2016 at 10:10 AM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 14:12, Thomas Lawson wrote:
Hi All, Thanks for the help with this. I have been using valgrind to try and pinpoint in my code the problem and it seems to be from
mzR::openMSfile(). I can't reproduce this:
library(mzR)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msmsPths
[1] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_1.mzML" [2] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_2.mzML"
tmp <- replicate(1000, mr <- mzR::openMSfile(msmsPths[1])) all(sapply(tmp, validObject))
[1] TRUE
sessionInfo()
R version 3.3.1 Patched (2016-08-02 r71022) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.5 LTS locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mzR_2.7.4 Rcpp_0.12.7 loaded via a namespace (and not attached): [1] ProtGenerics_1.5.1 tools_3.3.1 parallel_3.3.1 [4] Biobase_2.33.3 codetools_0.2-14 BiocGenerics_0.19.2 What are your mzR and Rcpp versions? Also, in your code, you will need to explicitly close(mz) after opening a connection to the raw data file. Otherwise, you might end up getting 'Error: failed opening file: Too many open files'. (This is not the reason for your error). Laurent
A simplified bit of code just using mzR I think will give the same
results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think).
e.g.
#----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR
with a
default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that
the
server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this correct? On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen < kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser for proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are
written
by other people, but bundled with the package. Martin's traceback
suggests
that some of these files are (partially?) encrypted. This might be
hard to
address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <dtenenba at fredhutch.org
wrote:
One thing I notice is that the crash does not happen every time. I have successfully built the package on morelia by hand with "R CMD build". Similarly I can source the stangled vignette without a crash sometimes. But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault *** address 0x29800000297, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/
Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>, info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer: 0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: getscans(filepth) 11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP = plotP, plotdir = plotdir, interpol = interpol, iwNorm = iwNorm, iwNormFun
=
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a,
args[[a]], pos
= envir, inherits = FALSE) r <- tryCatch(eval(xpr,
envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r) }
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages =
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]],
mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1 BiocParallel_1.7.8 [7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1 RColorBrewer_1.1-2 [22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X (morelia)
Thanks for reply. Some of those errors are a bit cryptic for me also. I have not heard of the valgrind functionality before in R. I will
test
a
few things out with valgrind and hopefully I can pinpoint the error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*)
and
Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install the msPurityData dependency directly (without Bioconductor). See line
10
https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am getting
the
error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is
installed.
Also, segfaults are rarely the result of missing packages. Instead,
it
is
likely due to errors in C code of one sort or another. On my linux,
I
made
sure I was using the 'devel' version of Bioconductor, and that all
of
my
packages were up-to-date via biocLite(). I then checked out msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_me mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size 400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-manual
.
rudefn
means that memory allocated with new[] is being deallocated with
free
(rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind
problem
Index: src/cramp.cpp
===================================================================
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { //
undeclared
scan
count
// this will provoke reading of index, which sets scan
count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ==20822== by 0x38084064: ??? (in /usr/lib/valgrind/memcheck-amd 64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_
coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in /lib/x86_64-linux-gnu/libcrypt o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a call opening a socket connection is going wrong, but I really don't know
if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of
one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/159938167 ############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity
###
############################################################
##################
############################################################
##################
* checking for file ?msPurity/DESCRIPTION? ... OK
* preparing ?msPurity?:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ...sh: line 1: 62889 Segmentation fault: 11
'/Library/Frameworks/R.framework/Resources/bin/Rscript' --vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle =
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L),
<pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...)
2: object at backend$getPeakList(x)
3: FUN(X[[i]], ...)
4: lapply(X = X, FUN = FUN, ...)
5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res,
"try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ": \n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress = .progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <- mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)})
16: getscans(filepths)
17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2))
18: eval(expr, envir, enclos)
19: eval(expr, envir, enclos)
20: withVisible(eval(expr, envir, enclos))
21: withCallingHandlers(withVisible(eval(expr, envir, enclos)),
warning = wHandler, error = eHandler, message = mHandler)
22: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
enclos)), warning = wHandler, error = eHandler, message =
mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning,
keep_message
= keep_message, output_handler = output_handler)
24: evaluate(code, envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(),
evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "")
message("Quitting
from lines ", paste(current_lines(i), collapse = "-"),
"
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet =
quiet,
encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet,
envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc)
setwd(startdir) find_vignette_product(name, by = "weave",
engine =
engine)}, error = function(e) { stop(gettextf("processing
vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or
confidential
information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you
have
received this message in error, please notify the sender
immediately by
e-mail and delete this email message from your computer. Thank you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
Hi Laurent,
Are you testing with valgrind?
The 'Mismatched free() / delete / delete []' only becomes apparent when
using valgrind. i.e. I have a document called mzR_test.R that contains the
following code:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
And then I run
R -d valgrind -f mzR_test.R
Regards,
Tom
On Thu, Sep 22, 2016 at 3:48 PM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 15:22, Kasper Daniel Hansen wrote:
Martin seemed to have fixed the original error, but recovered another
one.
Do we have a reproducible example with the other error (and did Martin's fix get into mzR) and do we know which platforms it fails on?
I haven't updated mzR since this conversation started, so I haven't incorporated any of Martin's patches. I can't see anything in hedgehog's svn log - I have opened an issue on the mzR github repo in the meantime. Also, I can source my local msPurity/doc/msPurity-vignette.R file and it runs fine. Laurent [1] https://github.com/sneumann/mzR/issues/52
Best, Kasper On Thu, Sep 22, 2016 at 10:10 AM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 14:12, Thomas Lawson wrote:
Hi All, Thanks for the help with this. I have been using valgrind to try and pinpoint in my code the problem and it seems to be from
mzR::openMSfile(). I can't reproduce this:
library(mzR)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msmsPths
[1] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_1.mzML" [2] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_2.mzML"
tmp <- replicate(1000, mr <- mzR::openMSfile(msmsPths[1])) all(sapply(tmp, validObject))
[1] TRUE
sessionInfo()
R version 3.3.1 Patched (2016-08-02 r71022) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.5 LTS locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mzR_2.7.4 Rcpp_0.12.7 loaded via a namespace (and not attached): [1] ProtGenerics_1.5.1 tools_3.3.1 parallel_3.3.1 [4] Biobase_2.33.3 codetools_0.2-14 BiocGenerics_0.19.2 What are your mzR and Rcpp versions? Also, in your code, you will need to explicitly close(mz) after opening a connection to the raw data file. Otherwise, you might end up getting 'Error: failed opening file: Too many open files'. (This is not the reason for your error). Laurent
A simplified bit of code just using mzR I think will give the same
results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think).
e.g.
#----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR
with a
default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that
the
server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this
correct?
On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen < kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser
for
proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are
written
by other people, but bundled with the package. Martin's traceback
suggests
that some of these files are (partially?) encrypted. This might be
hard to
address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <
dtenenba at fredhutch.org
wrote:
One thing I notice is that the crash does not happen every time. I
have
successfully built the package on morelia by hand with "R CMD
build".
Similarly I can source the stangled vignette without a crash
sometimes.
But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault *** address 0x29800000297, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/
Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>, info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer: 0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: getscans(filepth) 11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun
=
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a,
args[[a]], pos
= envir, inherits = FALSE) r <-
tryCatch(eval(xpr,
envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r)
}
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages
=
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]],
mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets
methods
[8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1
BiocParallel_1.7.8
[7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1
RColorBrewer_1.1-2
[22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X
(morelia)
Thanks for reply. Some of those errors are a bit cryptic for me
also.
I have not heard of the valgrind functionality before in R. I will
test
a
few things out with valgrind and hopefully I can pinpoint the
error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*)
and
Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install
the
msPurityData dependency directly (without Bioconductor). See
line
10
https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am
getting
the
error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is
installed.
Also, segfaults are rarely the result of missing packages.
Instead,
it
is
likely due to errors in C code of one sort or another. On my
linux,
I
made
sure I was using the 'devel' version of Bioconductor, and that
all
of
my
packages were up-to-date via biocLite(). I then checked out
msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source
code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in
/usr/lib/valgrind/vgpreload_me
mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size
400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-
manual
.
rudefn
means that memory allocated with new[] is being deallocated with
free
(rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind
problem
Index: src/cramp.cpp ============================================================
=======
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { //
undeclared
scan
count
// this will provoke reading of index, which sets scan
count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in
/usr/lib/valgrind/memcheck-amd
64-linux) ==20822== by 0x38084064: ??? (in
/usr/lib/valgrind/memcheck-amd
64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_
coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a
call
opening a socket connection is going wrong, but I really don't
know
if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of
one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/
159938167
############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/
Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################ ################## ############################################################ ################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript'
--vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle
=
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer:
0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L),
<pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$
peaks,
simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$
peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res,
"try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ":
\n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress =
.progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <-
mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr,
envir,
enclos)), warning = wHandler, error = eHandler, message =
mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning,
keep_message
= keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE,
keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(),
evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "")
message("Quitting
from lines ", paste(current_lines(i), collapse =
"-"),
"
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet =
quiet,
encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet,
envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding =
enc)
setwd(startdir) find_vignette_product(name, by = "weave",
engine =
engine)}, error = function(e) { stop(gettextf("processing
vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or
confidential
information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the
intended
recipient(s), you are hereby notified that any disclosure,
copying,
distribution, or use of this email message is prohibited. If you
have
received this message in error, please notify the sender
immediately by
e-mail and delete this email message from your computer. Thank
you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
On 22 September 2016 15:59, Thomas Lawson wrote:
Hi Laurent, Are you testing with valgrind? The 'Mismatched free() / delete / delete []' only becomes apparent when using valgrind.
Oh, I had missed that, thanks. Will apply the path asap, then. Laurent
i.e. I have a document called mzR_test.R that contains the following
code:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
And then I run
R -d valgrind -f mzR_test.R
Regards,
Tom
On Thu, Sep 22, 2016 at 3:48 PM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 15:22, Kasper Daniel Hansen wrote:
Martin seemed to have fixed the original error, but recovered another
one.
Do we have a reproducible example with the other error (and did Martin's fix get into mzR) and do we know which platforms it fails on?
I haven't updated mzR since this conversation started, so I haven't incorporated any of Martin's patches. I can't see anything in hedgehog's svn log - I have opened an issue on the mzR github repo in the meantime. Also, I can source my local msPurity/doc/msPurity-vignette.R file and it runs fine. Laurent [1] https://github.com/sneumann/mzR/issues/52
Best, Kasper On Thu, Sep 22, 2016 at 10:10 AM, Laurent Gatto <lg390 at cam.ac.uk> wrote:
On 22 September 2016 14:12, Thomas Lawson wrote:
Hi All, Thanks for the help with this. I have been using valgrind to try and pinpoint in my code the problem and it seems to be from
mzR::openMSfile(). I can't reproduce this:
library(mzR)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msmsPths
[1] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_1.mzML" [2] "/home/lg390/R/x86_64-pc-linux-gnu-library/3.3/ msPurityData/extdata/lcms/mzML/LCMSMS_2.mzML"
tmp <- replicate(1000, mr <- mzR::openMSfile(msmsPths[1])) all(sapply(tmp, validObject))
[1] TRUE
sessionInfo()
R version 3.3.1 Patched (2016-08-02 r71022) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.5 LTS locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] mzR_2.7.4 Rcpp_0.12.7 loaded via a namespace (and not attached): [1] ProtGenerics_1.5.1 tools_3.3.1 parallel_3.3.1 [4] Biobase_2.33.3 codetools_0.2-14 BiocGenerics_0.19.2 What are your mzR and Rcpp versions? Also, in your code, you will need to explicitly close(mz) after opening a connection to the raw data file. Otherwise, you might end up getting 'Error: failed opening file: Too many open files'. (This is not the reason for your error). Laurent
A simplified bit of code just using mzR I think will give the same
results,
see below:
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
library(mzR)
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
mr <- mzR::openMSfile(msmsPths[1])
#-----------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
This gives the familiar message
mr <- mzR::openMSfile(msmsPths[1])
==38138== Mismatched free() / delete / delete [] ==38138== at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_ memcheck-amd64-linux.so) .. However, I can prevent the "Mismatched free() / delete / delete []" message by forcing the backend to use the "pwiz" libraries (i think).
e.g.
#----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ mr <- mzR::openMSfile(msmsPths[1], backend="pwiz") #----------------------------------------------------------- ------------------------------------------------------------ ------------------------------------------------------------ I have updated to code so that a user can choose the backend for mzR
with a
default option of "pwiz" and pushed the changes to svn. Hopefully this will fix the problem on morelia, although I notice that
the
server is down at the moment, when will the next build be? Thanks for your help, Tom PS: Martin: I have removed the msPurity-vignette.R and msPurity-vignette.html files from the vignette folder. Is this
correct?
On Wed, Sep 21, 2016 at 7:38 PM, Kasper Daniel Hansen < kasperdanielhansen at gmail.com> wrote:
So this seems like a bug in mzR which is the main backend / parser
for
proteomics and metabolomics data. Someone should try to fix this. Unfortunately, mzR depends on several pieces of software which are
written
by other people, but bundled with the package. Martin's traceback
suggests
that some of these files are (partially?) encrypted. This might be
hard to
address. Best, Kasper On Wed, Sep 21, 2016 at 12:43 PM, Dan Tenenbaum <
dtenenba at fredhutch.org
wrote:
One thing I notice is that the crash does not happen every time. I
have
successfully built the package on morelia by hand with "R CMD
build".
Similarly I can source the stangled vignette without a crash
sometimes.
But when it does crash, this is what I see:
source("msPurity-vignette.R", echo=TRUE, max=Inf)
## ------------------------------------------------------------
------------
library(msPurity)
Loading required package: Rcpp
msmsPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "MSMS")
msPths <- list.files(system.file("extdata", "lcms", "mzML",
package="msPurityData"), full.names = TRUE, pattern = "LCMS_")
## ------------------------------------------------------------
------------
pa <- purityA(msmsPths)
*** caught segfault *** address 0x29800000297, cause 'memory not mapped' Traceback: 1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x7fb56861cb10>, dll = list(name = "Rcpp", path = "/Library/Frameworks/R.framework/Versions/3.3/
Resources/library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x7fb568606180>, info = <pointer: 0x1078f8000>), numParameters = -1L), <pointer: 0x7fb5686ae9c0>, <pointer: 0x7fb56868cf80>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$peaks, simplify = FALSE) 7: .local(object, ...) 8: mzR::peaks(mr) 9: mzR::peaks(mr) 10: getscans(filepth) 11: assessPuritySingle(filepth = pa at fileList[[i]], mostIntense = mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun
=
iwNormFun, ilim = ilim)
12: eval(expr, envir, enclos)
13: eval(xpr, envir = envir)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch(eval(xpr, envir = envir), error = function(e) e)
18: doTryCatch(return(expr), name, parentenv, handler)
19: tryCatchOne(expr, names, parentenv, handlers[[1L]])
20: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({ repeat { args <- nextElem(it) if
(obj$verbose) { cat(sprintf("evaluation # %d:\n", i))
print(args) } for (a in names(args)) assign(a,
args[[a]], pos
= envir, inherits = FALSE) r <-
tryCatch(eval(xpr,
envir
= envir), error = function(e) e) if (obj$verbose) {
cat("result of evaluating expression:\n") print(r)
}
tryCatch(accumulator(list(r), i), error = function(e) {
cat("error calling combine function:\n") print(e)
NULL }) i <- i + 1 }}, error = function(e) { if
(!identical(conditionMessage(e), "StopIteration"))
stop(simpleError(conditionMessage(e), expr))})
22: e$fun(obj, substitute(ex), parent.frame(), e$data)
23: operator(foreach::foreach(i = 1:length(pa at fileList), .packages
=
"mzR"), assessPuritySingle(filepth = pa at fileList[[i]],
mostIntense =
mostIntense, nearest = nearest, offsets = offsets, plotP =
plotP,
plotdir = plotdir, interpol = interpol, iwNorm = iwNorm,
iwNormFun = iwNormFun, ilim = ilim))
24: purityA(msmsPths)
25: eval(expr, envir, enclos)
26: eval(ei, envir)
27: withVisible(eval(ei, envir))
28: source("msPurity-vignette.R", echo = TRUE, max = Inf)
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:
sessionInfo()
R version 3.3.1 (2016-06-21) Platform: x86_64-apple-darwin13.4.0 (64-bit) Running under: OS X 10.9.5 (Mavericks) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] parallel stats graphics grDevices utils datasets
methods
[8] base other attached packages: [1] xcms_1.49.6 Biobase_2.33.3 ProtGenerics_1.5.1 [4] BiocGenerics_0.19.2 mzR_2.7.4 msPurity_0.99.6 [7] Rcpp_0.12.7 loaded via a namespace (and not attached): [1] sapa_2.0-2 magrittr_1.5 ifultools_2.0-4 [4] MASS_7.3-45 splines_3.3.1
BiocParallel_1.7.8
[7] lattice_0.20-34 foreach_1.4.3 splus2R_1.2-2 [10] stringr_1.1.0 fastcluster_1.1.21 plyr_1.8.4 [13] tools_3.3.1 grid_3.3.1 snow_0.4-1 [16] iterators_1.0.8 survival_2.39-5 multtest_2.29.0 [19] doSNOW_1.0.14 Matrix_1.2-7.1
RColorBrewer_1.1-2
[22] reshape2_1.4.1 S4Vectors_0.11.16 codetools_0.2-14 [25] MassSpecWavelet_1.39.0 stringi_1.1.1 compiler_3.3.1 [28] stats4_3.3.1 RANN_2.5 ----- Original Message -----
From: "Thomas Lawson" <thomas.nigel.lawson at gmail.com> To: "Martin Morgan" <martin.morgan at roswellpark.org> Cc: "bioc-devel" <Bioc-devel at r-project.org> Sent: Wednesday, September 21, 2016 8:42:20 AM Subject: Re: [Bioc-devel] msPurity build fail on Mac OS X
(morelia)
Thanks for reply. Some of those errors are a bit cryptic for me
also.
I have not heard of the valgrind functionality before in R. I will
test
a
few things out with valgrind and hopefully I can pinpoint the
error a
bit
more. Thanks again. Tom On Wed, Sep 21, 2016 at 12:50 PM, Martin Morgan < martin.morgan at roswellpark.org> wrote:
On 09/20/2016 05:18 AM, Thomas Lawson wrote:
Hi BioConductor community, My package (msPurity) is passing the build on the Linux (*zin1*)
and
Windows servers (*moscato1*) but failing on the Mac OS X server (*morelia*). Also I cannot seem to replicate the failure either on a local
installation
of Mac OS X (el captain) or with Travis CI. I should probably note that for Travis CI I did have to install
the
msPurityData dependency directly (without Bioconductor). See
line
10
https://raw.githubusercontent.com/Viant-Metabolomics/msPurit y/master/.travis.yml The error I think is coming from a function I have that uses the mzR::peaks() function but I am struggling to see why I am
getting
the
error. Any help or suggestions would be really appreciated.
Hi Tom -- This might be fun! You can see from http://bioconductor.org/checkResults/3.4/bioc-LATEST/morelia -R-instpkgs.html (linked from http://bioconductor.org/checkR
esults/3.4/bioc-LATEST/index.
html '1633' installed packages) that in fact msPurityData is
installed.
Also, segfaults are rarely the result of missing packages.
Instead,
it
is
likely due to errors in C code of one sort or another. On my
linux,
I
made
sure I was using the 'devel' version of Bioconductor, and that
all
of
my
packages were up-to-date via biocLite(). I then checked out
msPurity
from
svn, changed into the msPurity directory and installed it
R CMD INSTALL .
then I changed to the vignettes directory, Stangled the source
code
cd vignettes
R CMD Stangle msPurity-vignette.Rmd
(by the way, the products of build the package / vignette,
msPurity-vignette.R should not be in svn).
I then ran the vignette under valgrind
msPurity/vignettes$ R -d valgrind -f msPurity-vignette.R
leading to
pa <- purityA(msmsPths)
==19611== Mismatched free() / delete / delete [] ==19611== at 0x4C2EDEB: free (in
/usr/lib/valgrind/vgpreload_me
mcheck-amd64-linux.so) ==19611== by 0x11296DA5: cRamp::cRamp(char const*, bool)
(cramp.cpp:98)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== by 0x4F47B6C: Rf_eval (eval.c:732) ==19611== Address 0x1b8a4220 is 0 bytes inside a block of size
400
alloc'd
==19611== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==19611== by 0x11296949: cRamp::do_ramp(long, eWhatToRead) (cramp.cpp:215) ==19611== by 0x11296D9D: cRamp::cRamp(char const*, bool)
(cramp.cpp:97)
==19611== by 0x1129FC87: RcppRamp::open(char const*, bool) (RcppRamp.cpp:23) ==19611== by 0x112B49C4: Rcpp::CppMethod2<RcppRamp, void, char
const*,
bool>::operator()(RcppRamp*, SEXPREC**)
(Module_generated_CppMethod.h:
215)
==19611== by 0x112B0FBF: Rcpp::class_<RcppRamp>::invoke
_void(SEXPREC*,
SEXPREC*, SEXPREC**, int) (class.h:212) ==19611== by 0xED73CA0: CppMethod__invoke_void(SEXPREC*) (Module.cpp:200) ==19611== by 0x4F0DFD0: do_External (dotcode.c:548) ==19611== by 0x4F47F9E: Rf_eval (eval.c:713) ==19611== by 0x4F4A6B7: do_begin (eval.c:1807) ==19611== by 0x4F47D90: Rf_eval (eval.c:685) ==19611== by 0x4F4964C: Rf_applyClosure (eval.c:1135) ==19611== which from http://valgrind.org/docs/manual/mc-manual.html#mc-
manual
.
rudefn
means that memory allocated with new[] is being deallocated with
free
(rather than delete / delete[] Remarkably, this change to mzR removes this particular valgind
problem
Index: src/cramp.cpp ============================================================
=======
--- src/cramp.cpp (revision 121179)
+++ src/cramp.cpp (working copy)
@@ -95,7 +95,7 @@
// if (m_runInfo->m_data.scanCount < 0) { //
undeclared
scan
count
// this will provoke reading of index, which sets scan
count
rampScanInfo* tmp = getScanHeaderInfo ( 1 );
- free(tmp);
+ delete(tmp);
// }
// END HENRY
}
but doesn't get us out of the woods -- valgrind now complains
xset <- xcms::xcmsSet(msmsPths)
vex: the `impossible' happened: isZeroU vex storage: T total 3029292920 bytes allocated vex storage: P total 640 bytes allocated valgrind: the 'impossible' happened: LibVEX called failure_exit(). host stacktrace: ==20822== at 0x38083F48: ??? (in
/usr/lib/valgrind/memcheck-amd
64-linux) ==20822== by 0x38084064: ??? (in
/usr/lib/valgrind/memcheck-amd
64-linux) ... sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 20822) ==20822== at 0x25A294E0: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25A086FF: EC_POINT_mul (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0xB67335F: ??? ==20822== by 0xCF7F76F: ??? ==20822== by 0x5EB461A205EFD6FF: ??? ==20822== by 0xC221D2F: ??? ==20822== by 0x25A10E47: EC_KEY_check_key (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25A11260: EC_KEY_set_public_key_affine_
coordinates
(in
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25ACA882: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25AC637F: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x25AC5A33: ??? (in
/lib/x86_64-linux-gnu/libcrypt
o.so.1.0.0) ==20822== by 0x2599970C: FIPS_mode_set (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x25995F89: OPENSSL_init_library (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0) ==20822== by 0x40104E9: call_init.part.0 (dl-init.c:72) ==20822== by 0x40105FA: call_init (dl-init.c:30) ==20822== by 0x40105FA: _dl_init (dl-init.c:120) ==20822== by 0x4015711: dl_open_worker (dl-open.c:575) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x4014BD8: _dl_open (dl-open.c:660) ==20822== by 0x6C80F08: dlopen_doit (dlopen.c:66) ==20822== by 0x4010393: _dl_catch_error (dl-error.c:187) ==20822== by 0x6C81570: _dlerror_run (dlerror.c:163) ==20822== by 0x6C80FA0: dlopen@@GLIBC_2.2.5 (dlopen.c:87) ==20822== by 0x4EA93F0: AddDLL (Rdynload.c:537) ==20822== by 0x4EA996B: R_moduleCdynload (Rdynload.c:917) ==20822== by 0x4F68979: internet_Init (internet.c:79) ==20822== by 0x4F68AF2: R_newsock (internet.c:115) ==20822== by 0x4EF39C0: do_sockconn (connections.c:3196) ==20822== by 0x4F3B587: bcEval (eval.c:5658) ... which frankly is too cryptic for me -- it seems perhaps like a
call
opening a socket connection is going wrong, but I really don't
know
if
that
is cause or effect, or even relevant to your problem. The bottom line is that this is likely a problem in the C code of
one
of
the packages that you are using. Do you or a colleague have the expertise to work through this? Martin
Kind regards, Tom https://github.com/Bioconductor-mirror/msPurity http://bioconductor.org/checkResults/devel/bioc-LATEST/ msPurity/morelia-buildsrc.html https://bioconductor.org/packages/devel/bioc/html/msPurity.html Travis Mac build report: https://travis-ci.org/Viant-Metabolomics/msPurity/jobs/
159938167
############################################################ ################## ############################################################ ################## ### ### Running command: ### ### /Library/Frameworks/R.framework/Versions/Current/
Resources/
bin/R
CMD build --keep-empty-dirs --no-resave-data msPurity ### ############################################################ ################## ############################################################ ################## * checking for file ?msPurity/DESCRIPTION? ... OK * preparing ?msPurity?: * checking DESCRIPTION meta-information ... OK * installing the package to build vignettes * creating vignettes ...sh: line 1: 62889 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/Rscript'
--vanilla
--default-packages= -e "tools::buildVignettes(dir = '.', tangle
=
TRUE)" > '/tmp/RtmpCXdH7K/xshellf59d5efb2aea' 2>&1
ERROR
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address =
<pointer: 0x7fb83b714be0>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/3.3/Resources/
library/Rcpp/libs/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer:
0x7fb83b70ed10>,
info = <pointer: 0x1052f30c0>), numParameters = -1L),
<pointer:
0x7fb83b590710>, <pointer: 0x7fb83b5af740>, .pointer, ...) 2: object at backend$getPeakList(x) 3: FUN(X[[i]], ...) 4: lapply(X = X, FUN = FUN, ...) 5: sapply(scans, function(x) object at backend$getPeakList(x)$
peaks,
simplify = FALSE) 6: sapply(scans, function(x) object at backend$getPeakList(x)$
peaks,
simplify = FALSE)
7: .local(object, ...)
8: mzR::peaks(mr)
9: mzR::peaks(mr)
10: .fun(piece, ...)
11: (function (i) { piece <- pieces[[i]] if (.inform) {
res <- try(.fun(piece, ...)) if (inherits(res,
"try-error")) {
piece <- paste(utils::capture.output(print(piece)),
collapse = "\n") stop("with piece ", i, ":
\n",
piece, call. = FALSE) } } else { res <-
.fun(piece, ...) } progress$step() res})(2L)
12: .Call(loop_apply_, as.integer(n), f, env)
13: loop_apply(n, do.ply)
14: llply(.data = pieces, .fun = .fun, ..., .progress =
.progress,
.inform = .inform, .parallel = .parallel, .paropts = .paropts)
15: plyr::alply(files, 1, function(x) { mr <-
mzR::openMSfile(x)
scan_peaks <- mzR::peaks(mr) return(scan_peaks)}) 16: getscans(filepths) 17: purityX(xset, offsets = c(0.5, 0.5), xgroups = c(1, 2)) 18: eval(expr, envir, enclos) 19: eval(expr, envir, enclos) 20: withVisible(eval(expr, envir, enclos)) 21: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, error = eHandler, message = mHandler) 22: handle(ev <- withCallingHandlers(withVisible(eval(expr,
envir,
enclos)), warning = wHandler, error = eHandler, message =
mHandler))
23: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, debug = debug, last = i == length(out), use_try = stop_on_error != 2L, keep_warning = keep_warning,
keep_message
= keep_message, output_handler = output_handler) 24: evaluate(code, envir = env, new_device = FALSE,
keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options))
25: in_dir(opts_knit$get("root.dir") %n% input_dir(),
evaluate(code,
envir = env, new_device = FALSE, keep_warning =
!isFALSE(options$warning), keep_message =
!isFALSE(options$message), stop_on_error = if (options$error &&
options$include) 0L else 2L, output_handler =
knit_handlers(options$render, options)))
26: block_exec(params)
27: call_block(x)
28: process_group.block(group)
29: process_group(group)
30: withCallingHandlers(if (tangle) process_tangle(group) else
process_group(group), error = function(e) { setwd(wd)
cat(res, sep = "\n", file = output %n% "")
message("Quitting
from lines ", paste(current_lines(i), collapse =
"-"),
"
(", knit_concord$get("infile"), ") ") })
31: process_file(text, output)
32: knitr::knit(knit_input, knit_output, envir = envir, quiet =
quiet,
encoding = encoding) 33: rmarkdown::render(file, encoding = encoding, quiet = quiet,
envir
= globalenv())
34: vweave_rmarkdown(...)
35: engine$weave(file, quiet = quiet, encoding = enc)
36: doTryCatch(return(expr), name, parentenv, handler)
37: tryCatchOne(expr, names, parentenv, handlers[[1L]])
38: tryCatchList(expr, classes, parentenv, handlers)
39: tryCatch({ engine$weave(file, quiet = quiet, encoding =
enc)
setwd(startdir) find_vignette_product(name, by = "weave",
engine =
engine)}, error = function(e) { stop(gettextf("processing
vignette
'%s' failed with diagnostics:\n%s", file,
conditionMessage(e)), domain = NA, call. = FALSE)})
40: tools::buildVignettes(dir = ".", tangle = TRUE)
An irrecoverable exception occurred. R is aborting now ...
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
This email message may contain legally privileged and/or
confidential
information. If you are not the intended recipient(s), or the
employee or
agent responsible for the delivery of this message to the
intended
recipient(s), you are hereby notified that any disclosure,
copying,
distribution, or use of this email message is prohibited. If you
have
received this message in error, please notify the sender
immediately by
e-mail and delete this email message from your computer. Thank
you.
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/
Laurent Gatto | @lgatt0 http://cpu.sysbiol.cam.ac.uk/ http://lgatto.github.io/