[R-pkg-devel] -fbounds-check on develop version of Win-builder

peter dalgaard pdalgd at gmail.com
Sat Jun 10 09:33:19 CEST 2017


Hi Beanie,

Hmm, a bit of googling (on the error message) suggests that you are not alone... Several other CRAN package have recent ERRORs on Windows. I would suspect that gfortran 4.9.x is the culprit, generating false positives, but it is not really my area of expertise. 

Maybe just lean back and see what the CRAN crew makes of it?

- Peter

> On 9 Jun 2017, at 14:44 , Benjamin Christoffersen <boennecd at gmail.com> wrote:
> 
> Dear sirs
> 
> I am writing regarding a question for the package dynamichazard which
> I am the author of and the -fbounds-check flag used in R develop in
> Win-Builder.
> 
> R develop version has following flags added to the Fortran rule
> compared with R release on Win-builder: -pedantic -fbounds-check
> 
> Particularly, the line for dchur.o when building dynamichazard on the
> release version is:
> d:/Compiler/gcc-4.9.3/mingw_32/bin/gfortran -O3 -mtune=core2 -c
> dchur.f -o dchur.o
> 
> and the line on the develop version is:
> d:/Compiler/gcc-4.9.3/mingw_32/bin/gfortran -pedantic -fbounds-check
> -O3 -mtune=core2 -c dchur.f -o dchur.o
> 
> The latter causes the following error when the tests on the package is run:
>  At line 1 of file dchur.f
>  Fortran runtime error: Actual string length is shorter than the
> declared one for dummy argument 'uplo' (0/1)
> 
> The version of dynamichazard I submitted to the Win-Builder is at:
> https://github.com/boennecd/dynamichazard/tree/d3a8b7d5f39fbfcc14df008f1fdd71f4f38ac25a
> 
> The relevant code in dynamichazard/src/LAPACK_BLAS_wrapper.cpp is:
> #include <Rcpp.h>
> #include <R_ext/BLAS.h>
> #include <R_ext/Lapack.h>
> 
> extern "C"
> {
>  void F77_NAME(dchur)(
>      const char *,   // UPLO
>      const char *,   // TRANS
>      int*,    // N
>      int*,    // M
>      double*, // R
>      int*,    // LDR
>      double*, // X
>      double*, // Z
>      int*,    // LDZ
>      double*, // Y
>      double*, // RHO
>      double*, // C
>      double*, // S
>      int*     // INFO
>  );
> }
> 
> void ddhazard_dchur(double *R, double *x, int n, int ldr){
>  int info;
> 
>  double *c = new double[n];
>  double *s = new double[n];
> 
>  int m = 0;
>  int ldz = 1;
>  double z, y, rho;
> 
>  F77_CALL(dchur)(
>      "L",
>      "N",
>      &n, &m, R, &ldr,
>      x, &z, &ldz, &y, &rho, c, s, &info);
> 
>  // code abbreviated
> };
> 
> // code abbreviated
> 
> I have tried to re-produce the error with R release on my own laptop
> running Windows but failed to do so. Here is an example:
> $ ./tmp.sh
> + cat foo.cpp
> #include <iostream>
> 
> extern "C" {
>        void bar_(const char *in);
> }
> 
> int main()
> {
>    std::cout << "Running main" << std::endl;
>    bar_("F");
>    return 0;
> }
> + cat bar.f
>      subroutine bar(INPUT)
>      CHARACTER INPUT
> 
>      print *, input
>      end
> + c:/Rtools/mingw_32/bin/g++ -std=gnu++11 -O2 -Wall -mtune=core2 -c
> foo.cpp -o foo.o
> + c:/Rtools/mingw_32/bin/gfortran -pedantic -fbounds-check -O3 -c bar.f -o bar.o
> + c:/Rtools/mingw_32/bin/g++ -o foo foo.o bar.o -lgfortran -lm -lquadmath
> + ./foo.exe
> Running main
> F
> + Rscript.exe -e R.version
>               _
> platform       x86_64-w64-mingw32
> arch           x86_64
> os             mingw32
> system         x86_64, mingw32
> status
> major          3
> minor          4.0
> year           2017
> month          04
> day            21
> svn rev        72570
> language       R
> version.string R version 3.4.0 (2017-04-21)
> nickname       You Stupid Darkness
> + head -1 c:/Rtools/Rtools.txt
>                      Rtools Collection 3.4.0.1962
> 
> The example is not with a dynamic link library but comparable to the
> example here: https://code.launchpad.net/~fluidity-core/fluidity/gmsh-on-sphere/+merge/99395/comments/216834
> 
> I stupidly tried to solve the problem in the current version 0.3.1 of
> dynamichazard on CRAN by adding this rule in Makevars.win:
> dchur.o:
> $(F77) $(filter-out -fbounds-check,$(ALL_FFLAGS)) -c dchur.f -o dchur.o
> 
> This makes all my tests pass including those that uses the
> ddhazard_dchur C++ function on the develop version of Win-builder.
> However, it violates the second paragraph of "1.2.1 Using Makevars" in
> "Writing R Extensions".
> 
> Please, let me know if I have made an obvious mistake or if there is a
> straightforward solution.
> 
> Sincerely yours
> Benjamin Christoffersen
> 
> ______________________________________________
> R-package-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-package-devel mailing list