Skip to content

TiKV panic when evaluating INT64_MAX % -1 #63661

@r33s3n6

Description

@r33s3n6

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

CREATE TABLE t1 (c1 bigint);

INSERT INTO t1 (c1) VALUES (-9223372036854775808);

SELECT 1 FROM t1 where (c1 % -1) = 0;

2. What did you expect to see? (Required)

no panic

3. What did you see instead (Required)

   0: tikv_util::set_panic_hook::{{closure}}
             at workspace/source/tikv/components/tikv_util/src/lib.rs:480:18
   1: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2029:9
      std::panicking::rust_panic_with_hook
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:783:13
   2: std::panicking::begin_panic_handler::{{closure}}
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:649:13
   3: std::sys_common::backtrace::__rust_end_short_backtrace
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:171:18
   4: rust_begin_unwind
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:645:5
   5: core::panicking::panic_fmt
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs:72:14
   6: core::panicking::panic
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs:144:5
   7: <tidb_query_expr::types::function::Arg<Arg0_,tidb_query_expr::types::function::Arg<Arg1_,tidb_query_expr::types::function::Null>> as tidb_query_expr::impl_arithmetic::Arithmetic_Fn<A>>::eval
             at workspace/source/tikv/components/tidb_query_expr/src/impl_arithmetic.rs:11:1
      <tidb_query_expr::impl_arithmetic::Arithmetic_Evaluator<A> as tidb_query_expr::types::function::Evaluator>::eval
             at workspace/source/tikv/components/tidb_query_expr/src/impl_arithmetic.rs:11:1
      <tidb_query_expr::types::function::ArgConstructor<A,E> as tidb_query_expr::types::function::Evaluator>::eval
             at workspace/source/tikv/components/tidb_query_expr/src/types/function.rs:245:17
      <tidb_query_expr::types::function::ArgConstructor<A,E> as tidb_query_expr::types::function::Evaluator>::eval
             at workspace/source/tikv/components/tidb_query_expr/src/types/function.rs:261:17
      tidb_query_expr::impl_arithmetic::arithmetic_fn_meta::run
             at workspace/source/tikv/components/tidb_query_expr/src/impl_arithmetic.rs:11:1
   8: tidb_query_expr::types::expr_eval::<impl tidb_query_expr::types::expr::RpnExpression>::eval_decoded
             at workspace/source/tikv/components/tidb_query_expr/src/types/expr_eval.rs:308:31
   9: tidb_query_expr::types::expr_eval::<impl tidb_query_expr::types::expr::RpnExpression>::eval
             at workspace/source/tikv/components/tidb_query_expr/src/types/expr_eval.rs:218:9
      tidb_query_executors::selection_executor::BatchSelectionExecutor<Src>::handle_src_result
             at workspace/source/tikv/components/tidb_query_executors/src/selection_executor.rs:82:19
      <tidb_query_executors::selection_executor::BatchSelectionExecutor<Src> as tidb_query_executors::interface::BatchExecutor>::next_batch::{{closure}}
             at workspace/source/tikv/components/tidb_query_executors/src/selection_executor.rs:182:25
  10: <core::pin::Pin<P> as core::future::future::Future>::poll
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9
      <tidb_query_common::execute_stats::WithSummaryCollector<C,T> as tidb_query_executors::interface::BatchExecutor>::next_batch::{{closure}}
             at workspace/source/tikv/components/tidb_query_executors/src/interface.rs:114:55
  11: <core::pin::Pin<P> as core::future::future::Future>::poll
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9
      <alloc::boxed::Box<T> as tidb_query_executors::interface::BatchExecutor>::next_batch::{{closure}}
             at workspace/source/tikv/components/tidb_query_executors/src/interface.rs:82:40
  12: <core::pin::Pin<P> as core::future::future::Future>::poll
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9
      tidb_query_executors::runner::BatchExecutorsRunner<SS>::internal_handle_request::{{closure}}
             at workspace/source/tikv/components/tidb_query_executors/src/runner.rs:655:72
  13: <tikv_util::quota_limiter::CpuObserveFuture<F> as core::future::future::Future>::poll
             at workspace/source/tikv/components/tikv_util/src/quota_limiter.rs:177:19
      tidb_query_executors::runner::BatchExecutorsRunner<SS>::handle_request::{{closure}}
             at workspace/source/tikv/components/tidb_query_executors/src/runner.rs:519:22
      <tikv::coprocessor::dag::BatchDagHandler as tikv::coprocessor::RequestHandler>::handle_request::{{closure}}
             at workspace/source/tikv/src/coprocessor/dag/mod.rs:124:51
  14: <core::pin::Pin<P> as core::future::future::Future>::poll
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/future.rs:124:9
      <tikv::coprocessor::interceptors::deadline::DeadlineChecker<F> as core::future::future::Future>::poll
             at workspace/source/tikv/src/coprocessor/interceptors/deadline.rs:37:9
      <tikv::coprocessor::interceptors::tracker::Tracker<F,E> as core::future::future::Future>::poll
             at workspace/source/tikv/src/coprocessor/interceptors/tracker.rs:54:19
  15: <tikv::coprocessor::interceptors::concurrency_limiter::ConcurrencyLimiter<PF,F> as core::future::future::Future>::poll
             at workspace/source/tikv/src/coprocessor/interceptors/concurrency_limiter.rs:112:15
      tikv::coprocessor::endpoint::Endpoint<E>::handle_unary_request_impl::{{closure}}
             at workspace/source/tikv/src/coprocessor/endpoint.rs:484:87
      <resource_metering::InTags<T> as core::future::future::Future>::poll
             at workspace/source/tikv/components/resource_metering/src/lib.rs:274:9
      <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/future/future/map.rs:55:37
      <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/lib.rs:86:13
      <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/future/future/map.rs:55:37
      <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/lib.rs:86:13
  16: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/future/future/map.rs:55:37
      <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll
             at workspace/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/futures-util-0.3.31/src/lib.rs:86:13
      <resource_control::future::ControlledFuture<F> as core::future::future::Future>::poll
             at workspace/source/tikv/components/resource_control/src/future.rs:48:19
  17: resource_control::future::with_resource_limiter::{{closure}}
             at workspace/source/tikv/components/resource_control/src/future.rs:204:11
      <tracker::tls::TrackedFuture<F> as core::future::future::Future>::poll::{{closure}}
             at workspace/source/tikv/components/tracker/src/tls.rs:64:23
      std::thread::local::LocalKey<T>::try_with
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:270:16
      std::thread::local::LocalKey<T>::with
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:246:9
      <tracker::tls::TrackedFuture<F> as core::future::future::Future>::poll
             at workspace/source/tikv/components/tracker/src/tls.rs:62:27
      yatp::task::future::RawTask<F>::poll
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/task/future.rs:59:9
  18: yatp::task::future::TaskCell::poll
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/task/future.rs:103:9
      <yatp::task::future::Runner as yatp::pool::runner::Runner>::handle
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/task/future.rs:387:20
  19: <tikv_util::yatp_pool::YatpPoolRunner<T> as yatp::pool::runner::Runner>::handle
             at workspace/source/tikv/components/tikv_util/src/yatp_pool/mod.rs:199:24
      <yatp::queue::multilevel::TrackedRunner<R> as yatp::pool::runner::Runner>::handle
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/queue/multilevel.rs:285:19
  20: yatp::pool::worker::WorkerThread<T,R>::run
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/pool/worker.rs:48:13
      yatp::pool::builder::LazyBuilder<T>::build::{{closure}}
             at workspace/.cargo/git/checkouts/yatp-e704b73c3ee279b6/793be4d/src/pool/builder.rs:114:25
      std::sys_common::backtrace::__rust_begin_short_backtrace
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:155:18
  21: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:529:17
      <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs:272:9
      std::panicking::try::do_call
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:552:40
      std::panicking::try
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:516:19
      std::panic::catch_unwind
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:142:14
      std::thread::Builder::spawn_unchecked_::{{closure}}
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:528:30
      core::ops::function::FnOnce::call_once{{vtable.shim}}
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  22: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2015:9
      <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:2015:9
      std::sys::unix::thread::Thread::new::thread_start
             at root/.rustup/toolchains/nightly-2023-12-28-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:108:17
  23: start_thread
  24: __clone

4. What is your TiDB version? (Required)

Release Version: v8.5.3
Edition: Community
Git Commit Hash: dc2548aac79a712265e831cff2a3a896bc0a5a38
Git Branch: HEAD
UTC Build Time: 2025-07-31 13:54:43
GoVersion: go1.23.8
Race Enabled: false
Check Table Before Drop: false
Store: tikv

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions