pytorch - 💡(How to fix) Fix CPU FPE crash in `torch.arange` with invalid step parameter leading to division by zero [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
pytorch/pytorch#182663Fetched 2026-05-07 03:30:43
View on GitHub
Comments
2
Participants
3
Timeline
98
Reactions
0
Author
Timeline (top)
mentioned ×45subscribed ×45labeled ×6commented ×2

Calling torch.arange on CPU with an invalid step parameter (step=0) can trigger an AddressSanitizer FPE (floating-point exception) crash in the compute_arange_size utility function. The bug lacks necessary non-zero validation for the step parameter in both the upper Python API and underlying C++ implementation, leading to a direct division-by-zero error and immediate process abort.

Error Message

==2603338==ERROR: AddressSanitizer: FPE on unknown address 0x7fffda48d7cb (pc 0x7fffda48d7cb bp 0x7fffffffd230 sp 0x7fffffffce20 T0) #0 0x7fffda48d7cb in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54 #1 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$3::operator()() const::'lambda2'()::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3 #2 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$3::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3 #3 0x7fffda48c67c in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3 #4 0x7fffdb9e0515 in at::Tensor& c10::callUnboxedKernelFunction<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10 #5 0x7fffdb9e0515 in at::Tensor& c10::KernelFunction::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14 #6 0x7fffdb9e0515 in at::Tensor& c10::Dispatcher::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26 #7 0x7fffdb9e0515 in c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41 #8 0x7fffdb9e0515 in at::ops::arange_start_out::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1179:15 #9 0x7fffda722cd8 in at::arange_out(at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/build/aten/src/ATen/ops/arange.h:64:12 #10 0x7fffda722cd8 in at::native::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/aten/src/ATen/native/TensorFactories.cpp:176:10 #11 0x7fffdc3ee79b in at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterCompositeExplicitAutograd_0.cpp:2332:10 #12 0x7fffdc3ee79b in c10::impl::detail::WrapFunctionIntoFunctor<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12 #13 0x7fffdc3ee79b in c10::impl::wrap_kernel_functor_unboxed<c10::impl::detail::WrapFunctionIntoFunctor<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12 #14 0x7fffdb9dfa1b in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType&&, std::optionalc10::Layout&&, std::optionalc10::Device&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10 #15 0x7fffdb9dfa1b in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14 #16 0x7fffdb9dfa1b in at::Tensor c10::Dispatcher::redispatch<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)> const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:848:26 #17 0x7fffdb9dfa1b in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)>::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:623:41 #18 0x7fffdb9dfa1b in at::ops::arange_start_step::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1144:15 #19 0x7fffdbe1a621 in at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterBackendSelect.cpp:142:10 #20 0x7fffdbe1a621 in c10::impl::detail::WrapFunctionIntoFunctor<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12 #21 0x7fffdbe1a621 in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12 #22 0x7fffdb9df5ae in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType&&, std::optionalc10::Layout&&, std::optionalc10::Device&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10 #23 0x7fffdb9df5ae in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14 #24 0x7fffdb9df5ae in at::Tensor c10::Dispatcher::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26 #25 0x7fffdb9df5ae in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41 #26 0x7fffdb9df5ae in at::_ops::arange_start_step::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optionalc10::ScalarType, std::optionalc10::Layout, std::optionalc10::Device, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1137:15 #27 0x7ffff1fd0f70 in at::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/build/aten/src/ATen/ops/arange.h:46:12 #28 0x7ffff1fd0f70 in torch::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/torch/csrc/autograd/generated/variable_factories.h:247:34 #29 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*)::$_42::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) const /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1871:18 #30 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*) /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1873:21 #31 0x5555556de961 (/usr/bin/python3.10+0x18a961) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #32 0x5555556d542a in _PyObject_MakeTpCall (/usr/bin/python3.10+0x18142a) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #33 0x5555556cfa56 in _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x17ba56) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #34 0x5555557ae565 (/usr/bin/python3.10+0x25a565) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #35 0x5555557ae435 in PyEval_EvalCode (/usr/bin/python3.10+0x25a435) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #36 0x5555557d4ed7 (/usr/bin/python3.10+0x280ed7) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #37 0x5555557cf6de (/usr/bin/python3.10+0x27b6de) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #38 0x5555557d4c74 (/usr/bin/python3.10+0x280c74) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #39 0x5555557d4257 in _PyRun_SimpleFileObject (/usr/bin/python3.10+0x280257) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #40 0x5555557d3f36 in _PyRun_AnyFileObject (/usr/bin/python3.10+0x27ff36) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #41 0x5555557c83ad in Py_RunMain (/usr/bin/python3.10+0x2743ad) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #42 0x5555557a247c in Py_BytesMain (/usr/bin/python3.10+0x24e47c) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad) #43 0x7ffff7106d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #44 0x7ffff7106e3f in __libc_start_main csu/../csu/libc-start.c:392:3 #45 0x5555557a2374 in _start (/usr/bin/python3.10+0x24e374) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)

AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: FPE /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54 in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) ==2603338==ABORTING

Root Cause

Suspected root cause

Fix Action

Fix / Workaround

==2603338==ERROR: AddressSanitizer: FPE on unknown address 0x7fffda48d7cb (pc 0x7fffda48d7cb bp 0x7fffffffd230 sp 0x7fffffffce20 T0)
    #0 0x7fffda48d7cb in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54
    #1 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const::'lambda2'()::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #2 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #3 0x7fffda48c67c in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #4 0x7fffdb9e0515 in at::Tensor& c10::callUnboxedKernelFunction<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #5 0x7fffdb9e0515 in at::Tensor& c10::KernelFunction::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #6 0x7fffdb9e0515 in at::Tensor& c10::Dispatcher::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #7 0x7fffdb9e0515 in c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #8 0x7fffdb9e0515 in at::_ops::arange_start_out::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1179:15
    #9 0x7fffda722cd8 in at::arange_out(at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/build/aten/src/ATen/ops/arange.h:64:12
    #10 0x7fffda722cd8 in at::native::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/native/TensorFactories.cpp:176:10
    #11 0x7fffdc3ee79b in at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterCompositeExplicitAutograd_0.cpp:2332:10
    #12 0x7fffdc3ee79b in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #13 0x7fffdc3ee79b in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #14 0x7fffdb9dfa1b in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #15 0x7fffdb9dfa1b in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #16 0x7fffdb9dfa1b in at::Tensor c10::Dispatcher::redispatch<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:848:26
    #17 0x7fffdb9dfa1b in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:623:41
    #18 0x7fffdb9dfa1b in at::_ops::arange_start_step::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1144:15
    #19 0x7fffdbe1a621 in at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterBackendSelect.cpp:142:10
    #20 0x7fffdbe1a621 in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #21 0x7fffdbe1a621 in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #22 0x7fffdb9df5ae in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #23 0x7fffdb9df5ae in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #24 0x7fffdb9df5ae in at::Tensor c10::Dispatcher::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #25 0x7fffdb9df5ae in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #26 0x7fffdb9df5ae in at::_ops::arange_start_step::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1137:15
    #27 0x7ffff1fd0f70 in at::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/build/aten/src/ATen/ops/arange.h:46:12
    #28 0x7ffff1fd0f70 in torch::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/torch/csrc/autograd/generated/variable_factories.h:247:34
    #29 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*)::$_42::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) const /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1871:18
    #30 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*) /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1873:21
    #31 0x5555556de961  (/usr/bin/python3.10+0x18a961) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #32 0x5555556d542a in _PyObject_MakeTpCall (/usr/bin/python3.10+0x18142a) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #33 0x5555556cfa56 in _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x17ba56) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #34 0x5555557ae565  (/usr/bin/python3.10+0x25a565) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #35 0x5555557ae435 in PyEval_EvalCode (/usr/bin/python3.10+0x25a435) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #36 0x5555557d4ed7  (/usr/bin/python3.10+0x280ed7) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #37 0x5555557cf6de  (/usr/bin/python3.10+0x27b6de) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #38 0x5555557d4c74  (/usr/bin/python3.10+0x280c74) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #39 0x5555557d4257 in _PyRun_SimpleFileObject (/usr/bin/python3.10+0x280257) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #40 0x5555557d3f36 in _PyRun_AnyFileObject (/usr/bin/python3.10+0x27ff36) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #41 0x5555557c83ad in Py_RunMain (/usr/bin/python3.10+0x2743ad) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #42 0x5555557a247c in Py_BytesMain (/usr/bin/python3.10+0x24e47c) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #43 0x7ffff7106d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #44 0x7ffff7106e3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #45 0x5555557a2374 in _start (/usr/bin/python3.10+0x24e374) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             128
On-line CPU(s) list:                0-127
Vendor ID:                          AuthenticAMD
Model name:                         AMD Ryzen Threadripper PRO 5995WX 64-Cores
CPU family:                         25
Model:                              8
Thread(s) per core:                 2
Core(s) per socket:                 64
Socket(s):                          1
Stepping:                           2
Frequency boost:                    enabled
CPU max MHz:                        2700.0000
CPU min MHz:                        1800.0000
BogoMIPS:                           5389.77
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 invpcid_single hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca
Virtualization:                     AMD-V
L1d cache:                          2 MiB (64 instances)
L1i cache:                          2 MiB (64 instances)
L2 cache:                           32 MiB (64 instances)
L3 cache:                           256 MiB (8 instances)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-127
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected

Code Example

# poc_torch_arange_fpe.py
import torch

print("torch version:", torch.__version__)

# Minimal reproducer:
# fractional step + integral dtype
x = torch.arange(0, 10, 0.5, dtype=torch.int64)

print(x)

---

==2603338==ERROR: AddressSanitizer: FPE on unknown address 0x7fffda48d7cb (pc 0x7fffda48d7cb bp 0x7fffffffd230 sp 0x7fffffffce20 T0)
    #0 0x7fffda48d7cb in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54
    #1 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const::'lambda2'()::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #2 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #3 0x7fffda48c67c in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #4 0x7fffdb9e0515 in at::Tensor& c10::callUnboxedKernelFunction<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #5 0x7fffdb9e0515 in at::Tensor& c10::KernelFunction::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #6 0x7fffdb9e0515 in at::Tensor& c10::Dispatcher::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #7 0x7fffdb9e0515 in c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #8 0x7fffdb9e0515 in at::_ops::arange_start_out::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1179:15
    #9 0x7fffda722cd8 in at::arange_out(at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/build/aten/src/ATen/ops/arange.h:64:12
    #10 0x7fffda722cd8 in at::native::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/native/TensorFactories.cpp:176:10
    #11 0x7fffdc3ee79b in at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterCompositeExplicitAutograd_0.cpp:2332:10
    #12 0x7fffdc3ee79b in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #13 0x7fffdc3ee79b in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #14 0x7fffdb9dfa1b in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #15 0x7fffdb9dfa1b in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #16 0x7fffdb9dfa1b in at::Tensor c10::Dispatcher::redispatch<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:848:26
    #17 0x7fffdb9dfa1b in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:623:41
    #18 0x7fffdb9dfa1b in at::_ops::arange_start_step::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1144:15
    #19 0x7fffdbe1a621 in at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterBackendSelect.cpp:142:10
    #20 0x7fffdbe1a621 in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #21 0x7fffdbe1a621 in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #22 0x7fffdb9df5ae in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #23 0x7fffdb9df5ae in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #24 0x7fffdb9df5ae in at::Tensor c10::Dispatcher::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #25 0x7fffdb9df5ae in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #26 0x7fffdb9df5ae in at::_ops::arange_start_step::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1137:15
    #27 0x7ffff1fd0f70 in at::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/build/aten/src/ATen/ops/arange.h:46:12
    #28 0x7ffff1fd0f70 in torch::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/torch/csrc/autograd/generated/variable_factories.h:247:34
    #29 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*)::$_42::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) const /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1871:18
    #30 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*) /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1873:21
    #31 0x5555556de961  (/usr/bin/python3.10+0x18a961) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #32 0x5555556d542a in _PyObject_MakeTpCall (/usr/bin/python3.10+0x18142a) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #33 0x5555556cfa56 in _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x17ba56) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #34 0x5555557ae565  (/usr/bin/python3.10+0x25a565) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #35 0x5555557ae435 in PyEval_EvalCode (/usr/bin/python3.10+0x25a435) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #36 0x5555557d4ed7  (/usr/bin/python3.10+0x280ed7) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #37 0x5555557cf6de  (/usr/bin/python3.10+0x27b6de) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #38 0x5555557d4c74  (/usr/bin/python3.10+0x280c74) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #39 0x5555557d4257 in _PyRun_SimpleFileObject (/usr/bin/python3.10+0x280257) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #40 0x5555557d3f36 in _PyRun_AnyFileObject (/usr/bin/python3.10+0x27ff36) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #41 0x5555557c83ad in Py_RunMain (/usr/bin/python3.10+0x2743ad) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #42 0x5555557a247c in Py_BytesMain (/usr/bin/python3.10+0x24e47c) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #43 0x7ffff7106d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #44 0x7ffff7106e3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #45 0x5555557a2374 in _start (/usr/bin/python3.10+0x24e374) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: FPE /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54 in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&)
==2603338==ABORTING

---

PyTorch version: 2.10.0a0+gitf2bb22f
Is debug build: False
CUDA used to build PyTorch: Could not collect
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.5 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Clang version: 14.0.0-1ubuntu1.1
CMake version: version 4.1.2
Libc version: glibc-2.35

Python version: 3.10.12 (main, Aug 15 2025, 14:32:43) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-5.4.0-200-generic-x86_64-with-glibc2.35
Is CUDA available: False
CUDA runtime version: Could not collect
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: 
Nvidia driver version: Could not collect
cuDNN version: Could not collect
Is XPU available: False
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: False
Caching allocator config: N/A

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             128
On-line CPU(s) list:                0-127
Vendor ID:                          AuthenticAMD
Model name:                         AMD Ryzen Threadripper PRO 5995WX 64-Cores
CPU family:                         25
Model:                              8
Thread(s) per core:                 2
Core(s) per socket:                 64
Socket(s):                          1
Stepping:                           2
Frequency boost:                    enabled
CPU max MHz:                        2700.0000
CPU min MHz:                        1800.0000
BogoMIPS:                           5389.77
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 invpcid_single hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca
Virtualization:                     AMD-V
L1d cache:                          2 MiB (64 instances)
L1i cache:                          2 MiB (64 instances)
L2 cache:                           32 MiB (64 instances)
L3 cache:                           256 MiB (8 instances)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-127
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected

Versions of relevant libraries:
[pip3] numpy==2.2.6
[pip3] optree==0.17.0
[pip3] torch==2.10.0a0+gitf2bb22f
[conda] Could not collect
RAW_BUFFERClick to expand / collapse

🐛 Describe the bug

Summary

Calling torch.arange on CPU with an invalid step parameter (step=0) can trigger an AddressSanitizer FPE (floating-point exception) crash in the compute_arange_size utility function. The bug lacks necessary non-zero validation for the step parameter in both the upper Python API and underlying C++ implementation, leading to a direct division-by-zero error and immediate process abort.

Poc

Run following command:

poc.arange.py

# poc_torch_arange_fpe.py
import torch

print("torch version:", torch.__version__)

# Minimal reproducer:
# fractional step + integral dtype
x = torch.arange(0, 10, 0.5, dtype=torch.int64)

print(x)

ASAN-report

==2603338==ERROR: AddressSanitizer: FPE on unknown address 0x7fffda48d7cb (pc 0x7fffda48d7cb bp 0x7fffffffd230 sp 0x7fffffffce20 T0)
    #0 0x7fffda48d7cb in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54
    #1 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const::'lambda2'()::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #2 0x7fffda48d7cb in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)::$_3::operator()() const /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #3 0x7fffda48c67c in at::native::arange_out(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/native/RangeFactories.cpp:193:3
    #4 0x7fffdb9e0515 in at::Tensor& c10::callUnboxedKernelFunction<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #5 0x7fffdb9e0515 in at::Tensor& c10::KernelFunction::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #6 0x7fffdb9e0515 in at::Tensor& c10::Dispatcher::call<at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&>(c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #7 0x7fffdb9e0515 in c10::TypedOperatorHandle<at::Tensor& (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #8 0x7fffdb9e0515 in at::_ops::arange_start_out::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, at::Tensor&) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1179:15
    #9 0x7fffda722cd8 in at::arange_out(at::Tensor&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&) /root/pytorch/build/aten/src/ATen/ops/arange.h:64:12
    #10 0x7fffda722cd8 in at::native::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/native/TensorFactories.cpp:176:10
    #11 0x7fffdc3ee79b in at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterCompositeExplicitAutograd_0.cpp:2332:10
    #12 0x7fffdc3ee79b in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #13 0x7fffdc3ee79b in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::(anonymous namespace)::wrapper_CompositeExplicitAutograd_start_step_arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #14 0x7fffdb9dfa1b in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #15 0x7fffdb9dfa1b in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #16 0x7fffdb9dfa1b in at::Tensor c10::Dispatcher::redispatch<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:848:26
    #17 0x7fffdb9dfa1b in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:623:41
    #18 0x7fffdb9dfa1b in at::_ops::arange_start_step::redispatch(c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1144:15
    #19 0x7fffdbe1a621 in at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/RegisterBackendSelect.cpp:142:10
    #20 0x7fffdbe1a621 in c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h:17:12
    #21 0x7fffdbe1a621 in c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>), &(at::(anonymous namespace)::arange_start_step(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>))>, at::Tensor, c10::guts::typelist::typelist<c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> > >, at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/aten/src/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h:578:12
    #22 0x7fffdb9df5ae in at::Tensor c10::callUnboxedKernelFunction<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(void*, c10::OperatorKernel*, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>&&, std::optional<c10::Layout>&&, std::optional<c10::Device>&&, std::optional<bool>&&) /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:104:10
    #23 0x7fffdb9df5ae in at::Tensor c10::KernelFunction::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::OperatorHandle const&, c10::DispatchKeySet, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/boxing/KernelFunction_impl.h:173:14
    #24 0x7fffdb9df5ae in at::Tensor c10::Dispatcher::call<at::Tensor, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool> >(c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)> const&, c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:827:26
    #25 0x7fffdb9df5ae in c10::TypedOperatorHandle<at::Tensor (c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>)>::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) const /root/pytorch/aten/src/ATen/core/dispatch/Dispatcher.h:615:41
    #26 0x7fffdb9df5ae in at::_ops::arange_start_step::call(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, std::optional<c10::ScalarType>, std::optional<c10::Layout>, std::optional<c10::Device>, std::optional<bool>) /root/pytorch/build/aten/src/ATen/Operators_3.cpp:1137:15
    #27 0x7ffff1fd0f70 in at::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/build/aten/src/ATen/ops/arange.h:46:12
    #28 0x7ffff1fd0f70 in torch::arange(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) /root/pytorch/torch/csrc/autograd/generated/variable_factories.h:247:34
    #29 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*)::$_42::operator()(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&, c10::TensorOptions) const /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1871:18
    #30 0x7ffff1e7e675 in torch::autograd::THPVariable_arange(_object*, _object*, _object*) /root/pytorch/torch/csrc/autograd/generated/python_torch_functions_0.cpp:1873:21
    #31 0x5555556de961  (/usr/bin/python3.10+0x18a961) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #32 0x5555556d542a in _PyObject_MakeTpCall (/usr/bin/python3.10+0x18142a) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #33 0x5555556cfa56 in _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x17ba56) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #34 0x5555557ae565  (/usr/bin/python3.10+0x25a565) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #35 0x5555557ae435 in PyEval_EvalCode (/usr/bin/python3.10+0x25a435) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #36 0x5555557d4ed7  (/usr/bin/python3.10+0x280ed7) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #37 0x5555557cf6de  (/usr/bin/python3.10+0x27b6de) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #38 0x5555557d4c74  (/usr/bin/python3.10+0x280c74) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #39 0x5555557d4257 in _PyRun_SimpleFileObject (/usr/bin/python3.10+0x280257) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #40 0x5555557d3f36 in _PyRun_AnyFileObject (/usr/bin/python3.10+0x27ff36) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #41 0x5555557c83ad in Py_RunMain (/usr/bin/python3.10+0x2743ad) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #42 0x5555557a247c in Py_BytesMain (/usr/bin/python3.10+0x24e47c) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)
    #43 0x7ffff7106d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #44 0x7ffff7106e3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #45 0x5555557a2374 in _start (/usr/bin/python3.10+0x24e374) (BuildId: b2fd9010dc75aa747aee5296c31a07d210d124ad)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: FPE /root/pytorch/aten/src/ATen/native/RangeUtils.h:48:54 in long at::native::compute_arange_size<long>(c10::Scalar const&, c10::Scalar const&, c10::Scalar const&)
==2603338==ABORTING

Suspected root cause

From the observed behavior and ASAN backtraces, the failure is caused by missing defensive parameter validation in the torch.arange implementation, leading to a direct division-by-zero error:

  1. The core crash occurs in the compute_arange_size<long> function in RangeUtils.h:48, which is responsible for calculating the number of output elements for arange with the core formula: size = ceil((end - start) / step).
  2. When the step parameter is set to 0, the function directly performs a division operation without any non-zero validation, triggering a hardware-level floating-point exception (FPE) and immediate process abort.
  3. Neither the upper-layer Python API nor the C++ kernel entry adds pre-validation for the step parameter, allowing invalid zero-step input to reach the underlying calculation logic directly.
  4. Impact: This bug can be exploited to cause a denial-of-service (DoS) via process crash when processing untrusted input parameters, as the FPE cannot be caught by standard Python exception handling.

Versions

Environment

PyTorch version: 2.10.0a0+gitf2bb22f
Is debug build: False
CUDA used to build PyTorch: Could not collect
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.5 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0
Clang version: 14.0.0-1ubuntu1.1
CMake version: version 4.1.2
Libc version: glibc-2.35

Python version: 3.10.12 (main, Aug 15 2025, 14:32:43) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-5.4.0-200-generic-x86_64-with-glibc2.35
Is CUDA available: False
CUDA runtime version: Could not collect
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: 
Nvidia driver version: Could not collect
cuDNN version: Could not collect
Is XPU available: False
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: False
Caching allocator config: N/A

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             128
On-line CPU(s) list:                0-127
Vendor ID:                          AuthenticAMD
Model name:                         AMD Ryzen Threadripper PRO 5995WX 64-Cores
CPU family:                         25
Model:                              8
Thread(s) per core:                 2
Core(s) per socket:                 64
Socket(s):                          1
Stepping:                           2
Frequency boost:                    enabled
CPU max MHz:                        2700.0000
CPU min MHz:                        1800.0000
BogoMIPS:                           5389.77
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 invpcid_single hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca
Virtualization:                     AMD-V
L1d cache:                          2 MiB (64 instances)
L1i cache:                          2 MiB (64 instances)
L2 cache:                           32 MiB (64 instances)
L3 cache:                           256 MiB (8 instances)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-127
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected

Versions of relevant libraries:
[pip3] numpy==2.2.6
[pip3] optree==0.17.0
[pip3] torch==2.10.0a0+gitf2bb22f
[conda] Could not collect

cc @jgong5 @mingfeima @XiaobingSuper @sanchitintel @ashokei @jingxu10 @jerryzh168 @aditew01 @malfet @gchanan @mruberry

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

pytorch - 💡(How to fix) Fix CPU FPE crash in `torch.arange` with invalid step parameter leading to division by zero [2 comments, 3 participants]