Skip to content

Segfault in cmdstan_model(..., compile_model_methods = TRUE) on Ubuntu GitHub Actions #1177

@MansMeg

Description

@MansMeg

Describe the bug
I’m seeing a segfault in cmdstanr when model methods are compiled. The crash happens before sampling starts, during model construction, and it reproduces in a fresh R process without loading rstan.

I originally saw this intermittently in CI, so I created a small diagnostic workflow. In the attached cmdstanr_only artifact, the very first run segfaults in a fresh process. I also tested a mixed mode where an rstan fit runs first; that fit succeeds, and then the same cmdstanr step segfaults in the same place.

To Reproduce
Environment:

OS: GitHub Actions ubuntu-latest
R: release via r-lib/actions/setup-r@v2

Minimal reproduction

Using the attached Stan file model8k5.stan, in a fresh R session:

library(cmdstanr)

cat("cmdstanr:", as.character(packageVersion("cmdstanr")), "\n")
cat("CmdStan:", as.character(cmdstan_version()), "\n")
sessionInfo()

mod <- cmdstan_model(
  stan_file = "model8k5.stan",
  compile = TRUE,
  compile_model_methods = TRUE
)

Expected behavior
cmdstan_model() should return a CmdStanModel object.

Actual behavior
R aborts with a segfault during model-method compilation/loading. The relevant stack looks like:

cause 'invalid permissions'
dyn.load("/tmp/.../sourceCpp_2.so")
Rcpp::sourceCpp(...)
expose_model_methods(...)
CmdStanModel$new(... compile_model_methods = TRUE)

In the failing trace, the crash occurs before sampling, while cmdstanr is compiling/loading the generated model-method shared object.

Operating system
Environment
OS: GitHub Actions ubuntu-latest
R: release via r-lib/actions/setup-r@v2
cmdstanr: 0.9.0
CmdStan: 2.38.0
CmdStan installed via cmdstanr::install_cmdstan(cores = 2, overwrite = FALSE)

CmdStanR version number
0.9.0

Additional context
The same model works if I do not request model methods.

The cmdstanr_only reproduction is the strongest signal that this is not primarily an rstan/cmdstanr interaction.

In mixed mode, an rstan fit and log_prob() call succeed first, and then the cmdstanr step crashes in the same place.

If helpful, I also provide the full CI run artifacts and the small diagnostic script/workflow I used:

cmdstanr-model-methods-diagnostic-mixed.zip
cmdstanr-model-methods-diagnostic-cmdstanr_only.zip
model8k5.stan.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions