test-coverage failure dlopen(...) Symbol not found: ___gcov_merge_add


Hello. I am trying to switch my package (github.com/dankelley/oce) from hand-rolled covr checks to the 'test-coverage' github action. (I am new to these actions, and I have to say that I love them!)

This package has compiled C and Fortran code in addition to R code. (I point that out because the test-coverage action works fine in another package I have that lacks C and Fortran.)


I found that it fails with a message I've quoted in my subject line, and so I tried running



I suspect I can find a way to make it work locally, but my real goal is to have it working within the test-coverage action, because that will benefit not just me but many others.


I wonder whether there is a setting that will let me get this working?


My local machine is macOS, and the details of the message are as follows.

** testing if installed package can be loaded
Error: package or namespace load failed for ‘oce’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so':
  dlopen(/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so, 6): Symbol not found: ___gcov_merge_add
  Referenced from: /private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so
  Expected in: flat namespace
 in /private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/libs/oce.so
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce’
Error in file(con, "r") : cannot open the connection
In addition: Warning messages:
1: In utils::install.packages(repos = NULL, lib = tmp_lib, pkg$path,  :
  installation of package ‘/Users/kelley/git/oce’ had non-zero exit status
2: In file(con, "r") :
  cannot open file '/private/var/folders/8b/l4h64m1j22v5pb7vj049ff140000gn/T/Rtmpo6WMPA/R_LIBS660161b66e43/oce/R/oce': No such file or directory

The error indicates that a coverage library is not available, this should be automatically included with the default flags covr adds when compiling. Did you modify covr's global options in some way?