Skip to content

gcc-UBSAN on CRAN errors on forder.c:137:3: runtime error: null pointer passed as argument 2 #7051

@helske

Description

@helske

I got a message from CRAN regarding seqHMM package that there is a test failuri with gcc-UBSAN stemming from data.table: https://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/seqHMM/tests/testthat.Rout, namely forder.c.

I'll paste the trimmed output here in case the log files disappear:

> library(testthat)
> library(seqHMM)
Please cite seqHMM appropriately, see `citation('seqHMM')` for details.
> 
> test_check("seqHMM")
forder.c:137:3: runtime error: null pointer passed as argument 2, which is declared to never be null
    #0 0x7b6289002f38 in flush /tmp/Rtmp8svXjO/R.INSTALL29ad3d450313e2/data.table/src/forder.c:137
    #1 0x7b628907a303 in flush /tmp/Rtmp8svXjO/R.INSTALL29ad3d450313e2/data.table/src/forder.c:128
    #2 0x7b628907a303 in radix_r /tmp/Rtmp8svXjO/R.INSTALL29ad3d450313e2/data.table/src/forder.c:1327
    #3 0x7b6289085235 in forder /tmp/Rtmp8svXjO/R.INSTALL29ad3d450313e2/data.table/src/forder.c:804
    #4 0x7b628908a830 in forderReuseSorting /tmp/Rtmp8svXjO/R.INSTALL29ad3d450313e2/data.table/src/forder.c:1764
    #5 0x000000742222 in R_doDotCall /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:780
    #6 0x0000008d6f6a in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8668
    #7 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #8 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #9 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #10 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #11 0x000000a85ab3 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #12 0x000000a85ab3 in applyMethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:120
    #13 0x000000a89de0 in dispatchMethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:473
    #14 0x000000a8bd65 in Rf_usemethod.isra.0 /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:513
    #15 0x00000088b1d3 in tryDispatch /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:6069
    #16 0x0000008d8784 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8264
    #17 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #18 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #19 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #20 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #21 0x000000a85ab3 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #22 0x000000a85ab3 in applyMethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:120
    #23 0x000000a89de0 in dispatchMethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:473
    #24 0x000000a8bd65 in Rf_usemethod.isra.0 /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:513
    #25 0x000000a8c986 in do_usemethod /data/gannet/ripley/R/svn/R-devel/src/main/objects.c:579
    #26 0x0000008cd771 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8138
    #27 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #28 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #29 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #30 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #31 0x00000084e793 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #32 0x00000084e793 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280
    #33 0x00000087ea2e in do_set /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3567
    #34 0x00000084ebb6 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1232
    #35 0x00000072d88a in do_External /data/gannet/ripley/R/svn/R-devel/src/main/dotcode.c:573
    #36 0x0000008c0562 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8118
    #37 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #38 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #39 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #40 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #41 0x00000084e793 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #42 0x00000084e793 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280
    #43 0x00000086426b in do_begin /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2996
    #44 0x00000084ebb6 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1232
    #45 0x000000884541 in do_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3941
    #46 0x0000008c0562 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8118
    #47 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #48 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #49 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #50 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #51 0x00000084e793 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #52 0x00000084e793 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280
    #53 0x000000885633 in do_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:3959
    #54 0x0000008c0562 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8118
    #55 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #56 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #57 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #58 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #59 0x00000086b637 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #60 0x00000086b637 in R_forceAndCall /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2460
    #61 0x00000049a0b6 in do_lapply /data/gannet/ripley/R/svn/R-devel/src/main/apply.c:75
    #62 0x000000a848a6 in do_internal /data/gannet/ripley/R/svn/R-devel/src/main/names.c:1411
    #63 0x0000008cd771 in bcEval_loop /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:8138
    #64 0x0000008ad7ab in bcEval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:7501
    #65 0x00000084e0f2 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1167
    #66 0x000000865b0a in R_execClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2393
    #67 0x000000869d1a in applyClosure_core /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2306
    #68 0x00000084e793 in Rf_applyClosure /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:2328
    #69 0x00000084e793 in Rf_eval /data/gannet/ripley/R/svn/R-devel/src/main/eval.c:1280
    #70 0x0000009f2fa3 in Rf_ReplIteration /data/gannet/ripley/R/svn/R-devel/src/main/main.c:265
    #71 0x0000009f2fa3 in R_ReplConsole /data/gannet/ripley/R/svn/R-devel/src/main/main.c:317
    #72 0x0000009f82ba in run_Rmainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1234
    #73 0x000000a024d2 in Rf_mainloop /data/gannet/ripley/R/svn/R-devel/src/main/main.c:1241
    #74 0x0000004130af in main /data/gannet/ripley/R/svn/R-devel/src/main/Rmain.c:29
    #75 0x7f629d8115f4 in __libc_start_call_main (/lib64/libc.so.6+0x35f4) (BuildId: 2b3c02fe7e4d3811767175b6f323692a10a4e116)
    #76 0x7f629d8116a7 in __libc_start_main@@GLIBC_2.34 (/lib64/libc.so.6+0x36a7) (BuildId: 2b3c02fe7e4d3811767175b6f323692a10a4e116)
    #77 0x000000413a34 in _start (/data/gannet/ripley/R/gcc-SAN3/bin/exec/R+0x413a34) (BuildId: 219e2e1b6ad65e4b9894b1f68e9454130a96e247)

Check output on CRAN:

`* using log directory ‘/data/gannet/ripley/R/packages/tests-gcc-SAN/seqHMM.Rcheck’
* using R Under development (unstable) (2025-06-03 r88260)
* using platform: x86_64-pc-linux-gnu
* R was compiled by
    gcc (GCC) 15.1.1 20250425 (Red Hat 15.1.1-1)
    GNU Fortran (GCC) 15.1.1 20250425 (Red Hat 15.1.1-1)
* running under: Fedora Linux 42 (Workstation Edition)
* using session charset: UTF-8
* using option ‘--no-stop-on-test-error’
* checking for file ‘seqHMM/DESCRIPTION’ ... OK
* this is package ‘seqHMM’ version ‘2.0.0’
* package encoding: UTF-8
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking whether package ‘seqHMM’ can be installed ... [26m/46m] OK
* used C++ compiler: ‘g++ (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)’
* checking package directory ... OK
* checking whether the package can be loaded ... [24s/109s] OK
* checking whether the package can be loaded with stated dependencies ... [20s/89s] OK
* checking whether the package can be unloaded cleanly ... [20s/74s] OK
* checking whether the namespace can be loaded with stated dependencies ... [20s/71s] OK
* checking whether the namespace can be unloaded cleanly ... [23s/74s] OK
* checking loading without being on the library search path ... [23s/80s] OK
* checking compiled code ... OK
* checking installed files from ‘inst/doc’ ... OK
* checking files in ‘vignettes’ ... OK
* checking examples ... [211s/584s] OK
* checking tests ... [27m/58m] OK
  Running ‘testthat.R’ [27m/58m]
* checking package vignettes ... OK
* checking re-building of vignette outputs ... [15m/20m] OK
* DONE
Status: OK

I'm not sure how to debug this due to lack of access to gcc-UBSAN?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions