[R-pkg-devel] Note: information on .o files is not available / Found '_exit', possibly from '_exit' (C)

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Fri Jul 17 15:18:29 CEST 2020

On 17 July 2020 at 14:58, Benjamin Christoffersen wrote:
| Quick guess. After changing
| > SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -O3 -Wextra -Wall -Wno-unknown-pragmas -Wno-return-type -Wno-ignored-attributes -Wno-cast-function-type -Wno-error=cast-function-type")
| to
| > SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -O3 -Wextra -Wall")
| I managed to `R CMD INSTALL` the package with gcc-8 on Ubuntu. Then
| doing `cd ~/R/x86_64-pc-linux-gnu-library/3.6/gpboost/libs/` and
|  - nm *.so -C | grep exit
|  - nm *.so -C | grep abort
|  - nm *.so -C | grep printf
| yields nothing. However, doing `nm *.so -C | grep assert` yields
|                  U __assert_fail@@GLIBC_2.2.5
| and doing `grep "assert" -nr .` shows that `assert` is being called.
| Thus, is everything build with `-NDEBUG`? See
| https://cran.r-project.org/doc/manuals/r-devel/R-exts.html#DOCF76

Very nice catch!

Given the package (and underlying library) has a joint repo, it is pretty
easy to search directly at GitHub too, and it looks like all the required
legwork has been done to #ifdef printf() statements and alike.

Now, I had to do the same work for packages of mine too in the past, and I
don't recall the test output "crossing". So if it really were only assert
coming back in via -NDEBUG then the tests for printf would NOT be triggered.
So something else must likely be hiding.  Which is ... difficult to check in
a codebase that includes duplicate copies of Eigen, LighGBM, ... and more.


https://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org

More information about the R-package-devel mailing list