[Bioc-devel] R CMD check without WARNING: g++ and STL issue for xcms and mzR

Martin Morgan martin.morgan at roswellpark.org
Sun Apr 2 16:01:58 CEST 2017

On 04/02/2017 06:52 AM, Neumann, Steffen wrote:
> Hi,
> in preparation for the release, we are hunting down WARNINGS
> "Found ‘abort’, possibly from ‘abort’ (C)" in xcms/mzR.
> The abort() call is not coming from XCMS, but rather
> from the C++ code in the STL, and we have no idea
> how to get rid of it.
> We are tracking this in: https://github.com/sneumann/xcms/issues/150
> In a nutshell, the standard tenplate library (STL) that comes
> with g++-5.4.0 has a snippet:
> https://github.com/gcc-mirror/gcc/blob/1cb6c2eb3b8361d850be8e8270c59727
> 0a1a7967/libstdc%2B%2B-v3/include/bits/stl_list.h#L1825
> ...
> # 1770 "/usr/include/c++/5/bits/stl_list.h"
> void _M_check_equal_allocators(list& __x) {
>  if (_M_get_Node_allocator())
>    __builtin_abort();
> }
> You can also check this by looking at the compiler output
> after the preprocess step:
> g++ -I/usr/share/R/include -DNDEBUG      -fpic  -g -O2 -fstack-
> protector-strong -Wformat -Werror=format-security -Wdate-time
> -D_FORTIFY_SOURCE=2 -g  -c massifquant/TrMgr.cpp -E | less
> The same applies to mzR, where the same stl_list.h is included
> in two files (Found ‘abort’, possibly from ‘abort’ (C)
>     Objects: ‘./boost/libs/regex/src/instances.o’,
>       ‘./boost/libs/regex/src/winstances.o’)
> => Since we don't want to patch the STL, we have no idea
>    how to fix that WARNING. Is there a way to get an exception,
>    or patch/whitelist this call in R CMD check ?

I don't think Bioconductor can help with this; maybe the Rcpp or R-devel 
mailing lists?

Presumably there is a minimal example that generates the warning? It 
would be convenient to communicate that (maybe a package as github 
repo?) rather than the prospect of mzR / xcms installation & debugging.


> Yours,
> Steffen Neumann

This email message may contain legally privileged and/or...{{dropped:2}}

More information about the Bioc-devel mailing list