Skip to content

[C++] Caught abort on asof_join_benchmark run for lost an arg #40233

@ZhangHuiGui

Description

@ZhangHuiGui

Describe the bug, including details regarding any error messages, version, and platform.

How to reproduce

When i test asof join with asof_join_benchmark, i met an abort failure.

  • arrow version 193e39cad4d8e1a01376d6b5199077e401484838
  • bechmark version 93a96a26a6ba36894d7fa6f43513708c595ccb5f
# compile with
cmake .. -DCMAKE_BUILD_TYPE=Debug -DARROW_DATASET=ON -DARROW_COMPUTE=ON -DARROW_FILESYSTEM=OFF -DARROW_JEMALLOC=OFF -DARROW_ORC=OFF -DARROW_PARQUET=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DARROW_BUILD_EXAMPLES=ON -DARROW_TESTING=ON -DARROW_BUILD_TESTS=ON -DARROW_CSV=ON -DARROW_BUILD_BENCHMARKS=ON -DARROW_FLIGHT=ON -DARROW_WITH_RE2=OFF -DARROW_WITH_SNAPPY=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_BROTLI=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZSTD=ON -DARROW_WITH_BZ2=ON -DARROW_BUILD_OPENMP_BENCHMARKS=ON

# run
cd debug && ./arrow-acero-asof-join-benchmark

# abort
Args: Check `ArgsCnt() == -1 || ArgsCnt() == static_cast<int>(args.size())' failed.

Reason

We forget to add an arg cause the below code's assert.

Benchmark* Benchmark::Args(const std::vector<int64_t>& args) {
  BM_CHECK(ArgsCnt() == -1 || ArgsCnt() == static_cast<int>(args.size()));
  args_.push_back(args);
  return this;
}

int Benchmark::ArgsCnt() const {
  if (args_.empty()) {
    if (arg_names_.empty()) return -1;
    return static_cast<int>(arg_names_.size());
  }
  return static_cast<int>(args_.front().size());
}

arg_names_ is 9 and args's size is 8.

Component(s)

C++

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions