Skip to content

lme4/RcppEigen gcc-UBSAN issues #794

@bbolker

Description

@bbolker

On 2024-06-03 8:58 a.m., Prof Brian Ripley wrote:

On 03/06/2024 09:44, Kurt Hornik wrote:

Prof Brian Ripley writes:

Ben/Dirk,

This seems from code in lme4 using RcppEigen ... pls have a look.

(Must be caused by recent changes in R-devel, but we do not yet know
which one ...)

Looks like it is r86629 (as are a score of recent similar errors): I am
running checks with that reverted.

Best
-k

Dear maintainer,
Please see the problems shown on
https://cran.r-project.org/web/checks/check_results_lme4.html.

Please correct before 2024-06-17 to safely retain your package on CRAN.

commit r86629 does say it turns on stricter type checking so ... ??

From https://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/lme4/lme4-Ex.Rout:

(seems deep within the Eigen code itself: any chance that this is actually an upstream problem? Also, I find it a little surprising that it gets triggered exactly once in the entire test suite ... possibly Nelder-Mead related?

fm01ML <- lmer(Yield ~ 1|Batch, Dyestuff, REML = FALSE)
> system.time(
+   tpr  <- profile(fm01ML, optimizer="Nelder_Mead", which="beta_")
+ )## fast; as only *one* beta parameter is profiled over -> 0.09s (2022)
/data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h:193:18: runtime error: reference binding to misaligned address 0x000000000001 for type 'const double', which requires 8 byte alignment
0x000000000001: note: pointer points here
<memory cannot be printed>
    #0 0x7f80ce648e19 in Eigen::internal::blas_data_mapper<double const, long, 0, 0, 1>::operator()(long, long) const /data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h:193
    #1 0x7f80ce648e19 in Eigen::internal::const_blas_data_mapper<double, long, 0>::getSubMapper(long, long) const /data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h:394
    #2 0x7f80ce648e19 in Eigen::internal::general_matrix_matrix_triangular_product<long, double, 1, false, double, 0, false, 0, 1, 2, 0>::run(long, long, double const*, long, double const*, long, double*, long, long, double const&, Eigen::internal::level3_blocking<double, double>&) /data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h:100
    #3 0x7f80ce5da77d in Eigen::selfadjoint_product_selector<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const>, 2, false>::run(Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >&, Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const> const&, double const&) /data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/products/SelfadjointProduct.h:113
    #4 0x7f80ce5da77d in Eigen::SelfAdjointView<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, 2u>& Eigen::SelfAdjointView<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, 2u>::rankUpdate<Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const> >(Eigen::MatrixBase<Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > const> > const&, double const&) /data/gannet/ripley/R/test-dev/RcppEigen/include/Eigen/src/Core/products/SelfadjointProduct.h:126
    #5 0x7f80ce5da77d in lme4::merPredD::merPredD(SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*) /data/gannet/ripley/R/packages/tests-gcc-SAN/lme4/src/predModule.cpp:55
    #6 0x7f80ce3e2e49 in merPredDCreate /data/gannet/ripley/R/packages/tests-gcc-SAN/lme4/src/external.cpp:679
    #7 0x58e66f in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:832
    #8 0x596807 in do_dotcall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:1437
    #9 0x68ff04 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1265
    #10 0x69d2f7 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3581
    #11 0x68f918 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1237
    #12 0x6996cb in do_begin /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3009
    #13 0x68f918 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1237
    #14 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #15 0x6970a8 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2311
    #16 0x68f4ed in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2333
    #17 0x68f4ed in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1285
    #18 0x6996cb in do_begin /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3009
    #19 0x68f918 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1237
    #20 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #21 0x6970a8 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2311
    #22 0x64e5b4 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2333
    #23 0x64e5b4 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8111
    #24 0x68e662 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7523
    #25 0x68eeda in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #26 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #27 0x697a13 in R_execMethod /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2571
    #28 0x7f80e20af967 in R_dispatchGeneric /data/gannet/ripley/R/svn/R-devel/src/library/methods/src/methods_list_dispatch.c:1151
    #29 0x74de37 in do_standardGeneric /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:1344
    #30 0x664a68 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8075
    #31 0x68e662 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7523
    #32 0x68eeda in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #33 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #34 0x6970a8 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2311
    #35 0x698d18 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2333
    #36 0x747190 in dispatchMethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:472
    #37 0x7481a9 in Rf_usemethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:508
    #38 0x748d6f in do_usemethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:578
    #39 0x63f339 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8160
    #40 0x68e662 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7523
    #41 0x68eeda in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #42 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #43 0x6970a8 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2311
    #44 0x68f4ed in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2333
    #45 0x68f4ed in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1285
    #46 0x69d2f7 in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3581
    #47 0x68f918 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1237
    #48 0x690c09 in forcePromise /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:976
    #49 0x690c09 in forcePromise /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:954
    #50 0x69121f in getvar /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:5856
    #51 0x6558ae in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7870
    #52 0x68e662 in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7523
    #53 0x68eeda in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #54 0x694c3e in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2398
    #55 0x6970a8 in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2311
    #56 0x68f4ed in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2333
    #57 0x68f4ed in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1285
    #58 0x714a9e in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:262
    #59 0x715111 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:314
    #60 0x715254 in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1216
    #61 0x7152a2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1223
    #62 0x41b7d8 in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29
    #63 0x7f80e1e2950f in __libc_start_call_main (/lib64/libc.so.6+0x2950f) (BuildId: 8257ee907646e9b057197533d1e4ac8ede7a9c5c)
    #64 0x7f80e1e295c8 in __libc_start_main_alias_2 (/lib64/libc.so.6+0x295c8) (BuildId: 8257ee907646e9b057197533d1e4ac8ede7a9c5c)
    #65 0x41e034 in _start (/data/gannet/ripley/R/gcc-SAN/bin/exec/R+0x41e034) (BuildId: 712ed179b4b313b62b0c70c49da020a03ce27c58)

   user  system elapsed 
  1.891   0.115   2.189 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions