Skip to content

AddressSanitizer: Error in pathfinder writer #3361

@andrjohns

Description

@andrjohns

Hello! I'm seeing address sanitizer errors when running pathfinder models.

If I add to make/local:

CPPFLAGS = -fsanitize=address
LDFLAGS = -fsanitize=address

And build cmdstan and the example model, I get the following error:

andrew@Andrews-MacBook-Air bernoulli % ./bernoulli pathfinder data file=bernoulli.data.json
method = pathfinder
  pathfinder
    init_alpha = 0.001 (Default)
    tol_obj = 1e-12 (Default)
    tol_rel_obj = 10000 (Default)
    tol_grad = 1e-08 (Default)
    tol_rel_grad = 1e+07 (Default)
    tol_param = 1e-08 (Default)
    history_size = 5 (Default)
    num_psis_draws = 1000 (Default)
    num_paths = 4 (Default)
    save_single_paths = false (Default)
    psis_resample = true (Default)
    calculate_lp = true (Default)
    max_lbfgs_iters = 1000 (Default)
    num_draws = 1000 (Default)
    num_elbo_draws = 25 (Default)
id = 1 (Default)
data
  file = bernoulli.data.json
init = 2 (Default)
random
  seed = 3405835890 (Default)
output
  file = output.csv (Default)
  diagnostic_file =  (Default)
  refresh = 100 (Default)
  sig_figs = 8 (Default)
  profile_file = profile.csv (Default)
  save_cmdstan_config = false (Default)
num_threads = 1 (Default)

Path [1] :Initial log joint density = -9.527892
Path [1] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes 
              5      -6.748e+00      4.813e-04   4.914e-06    1.000e+00  1.000e+00       156 -6.231e+00 -6.296e+00                  
Path [1] :Best Iter: [4] ELBO (-6.230742) evaluations: (156)
Path [2] :Initial log joint density = -18.458513
Path [2] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes 
              5      -6.748e+00      5.955e-04   1.111e-05    1.000e+00  1.000e+00       156 -6.205e+00 -6.194e+00                  
Path [2] :Best Iter: [5] ELBO (-6.193743) evaluations: (156)
Path [3] :Initial log joint density = -7.225700
Path [3] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes 
              4      -6.748e+00      4.497e-03   1.190e-04    1.000e+00  1.000e+00       123 -6.201e+00 -6.091e+00                  
Path [3] :Best Iter: [4] ELBO (-6.091215) evaluations: (123)
Path [4] :Initial log joint density = -9.446062
Path [4] : Iter      log prob        ||dx||      ||grad||     alpha      alpha0      # evals       ELBO    Best ELBO        Notes 
              5      -6.748e+00      4.552e-04   4.504e-06    1.000e+00  1.000e+00       156 -6.174e+00 -6.268e+00                  
Path [4] :Best Iter: [2] ELBO (-6.174283) evaluations: (156)
=================================================================
==75174==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62500002a040 at pc 0x000102b66b4c bp 0x00016d4c1cf0 sp 0x00016d4c1ce8
READ of size 8 at 0x62500002a040 thread T0
    #0 0x000102b66b48 in int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&)::operator()(tbb::blocked_range<long> const&) const+0x1444 (bernoulli:arm64+0x10022eb48)
    #1 0x000102b65288 in void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type>>::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<long>, int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&), tbb::auto_partitioner const>, tbb::blocked_range<long>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&)+0x984 (bernoulli:arm64+0x10022d288)
    #2 0x000102b64430 in void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<long>, int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&), tbb::auto_partitioner const>, tbb::blocked_range<long>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&)+0x298 (bernoulli:arm64+0x10022c430)
    #3 0x000102b64104 in tbb::interface9::internal::start_for<tbb::blocked_range<long>, int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&), tbb::auto_partitioner const>::execute()+0x11c (bernoulli:arm64+0x10022c104)
    #4 0x000102e43058 in tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::process_bypass_loop(tbb::internal::context_guard_helper<false>&, tbb::task*, long)+0x194 (libtbb.dylib:arm64+0x17058)
    #5 0x000102e42704 in tbb::internal::custom_scheduler<tbb::internal::IntelSchedulerTraits>::local_wait_for_all(tbb::task&, tbb::task*)+0x104 (libtbb.dylib:arm64+0x16704)
    #6 0x000102e400d8 in tbb::internal::generic_scheduler::spawn_root_and_wait(tbb::task&, tbb::task*&)+0xdc (libtbb.dylib:arm64+0x140d8)
    #7 0x000102b63df4 in tbb::interface9::internal::start_for<tbb::blocked_range<long>, int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<long> const&, int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&) const&, tbb::auto_partitioner const&)+0x248 (bernoulli:arm64+0x10022bdf4)
    #8 0x00010299b54c in int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)+0x1780 (bernoulli:arm64+0x10006354c)
    #9 0x000102982040 in cmdstan::command(int, char const**)+0x39d8 (bernoulli:arm64+0x10004a040)
    #10 0x0001029bef28 in main+0x18 (bernoulli:arm64+0x100086f28)
    #11 0x00019ad05d50 in start+0x1c0c (dyld:arm64e+0x3d50)

0x62500002a040 is located 0 bytes after 8000-byte region [0x625000028100,0x62500002a040)
allocated by thread T0 here:
    #0 0x00010346530c in malloc+0x78 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3d30c)
    #1 0x000102a95290 in <deduplicated_symbol>+0x24 (bernoulli:arm64+0x10015d290)
    #2 0x00010299b1f8 in int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)+0x142c (bernoulli:arm64+0x1000631f8)
    #3 0x000102982040 in cmdstan::command(int, char const**)+0x39d8 (bernoulli:arm64+0x10004a040)
    #4 0x0001029bef28 in main+0x18 (bernoulli:arm64+0x100086f28)
    #5 0x00019ad05d50 in start+0x1c0c (dyld:arm64e+0x3d50)

SUMMARY: AddressSanitizer: heap-buffer-overflow (bernoulli:arm64+0x10022eb48) in int stan::services::pathfinder::pathfinder_lbfgs_multi<stan::model::model_base, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>(stan::model::model_base&, std::__1::vector<std::__1::shared_ptr<stan::io::var_context>, std::__1::allocator<std::__1::shared_ptr<stan::io::var_context>>>&, unsigned int, unsigned int, double, int, double, double, double, double, double, double, int, int, int, int, int, bool, int, stan::callbacks::interrupt&, stan::callbacks::logger&, std::__1::vector<stan::callbacks::writer, std::__1::allocator<stan::callbacks::writer>>&, std::__1::vector<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, std::__1::vector<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>, std::__1::allocator<stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>>>&, stan::callbacks::unique_stream_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, stan::callbacks::json_writer<std::__1::basic_ofstream<char, std::__1::char_traits<char>>, std::__1::default_delete<std::__1::basic_ofstream<char, std::__1::char_traits<char>>>>&, bool, bool)::'lambda0'(tbb::blocked_range<long> const&)::operator()(tbb::blocked_range<long> const&) const+0x1444
Shadow bytes around the buggy address:
  0x625000029d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x625000029e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x625000029e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x625000029f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x625000029f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x62500002a000: 00 00 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa
  0x62500002a080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x62500002a100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x62500002a180: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x62500002a200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x62500002a280: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==75174==ABORTING
zsh: abort      ./bernoulli pathfinder data file=bernoulli.data.json

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