Skip to content

[Bug]: Segmentation fault due to read beyond allocated buffer in GPU plugin graph otimizer #32295

@toms-g2

Description

@toms-g2

OpenVINO Version

tag 2025.3.0

Operating System

Other (Please specify in description)

Device used for inference

HETERO

Framework

ONNX

Model used

Custom

Issue description

OS: Fedora 42

Image

Stack trace:

libopenvino_intel_gpu_plugin.so!cldnn::prepare_quantization::prepare_dequantize_merge(cldnn::prepare_quantization * const this, cldnn::program & p, cldnn::eltwise_node & eltwise_node) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_quantization.cpp:382)
libopenvino_intel_gpu_plugin.so!cldnn::prepare_quantization::run(cldnn::prepare_quantization * const this, cldnn::program & p) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/graph_optimizer/prepare_quantization.cpp:571)
libopenvino_intel_gpu_plugin.so!cldnn::pass_manager::run(cldnn::pass_manager * const this, cldnn::program & p, cldnn::base_pass & pass) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/pass_manager.cpp:56)
libopenvino_intel_gpu_plugin.so!cldnn::program::apply_opt_pass(cldnn::program * const this, cldnn::base_pass & pass) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/program.cpp:1415)
libopenvino_intel_gpu_plugin.so!cldnn::program::apply_opt_pass<cldnn::prepare_quantization>(cldnn::program * const this) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/include/intel_gpu/graph/program.hpp:356)
libopenvino_intel_gpu_plugin.so!cldnn::program::pre_optimize_graph(cldnn::program * const this, bool is_internal) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/program.cpp:538)
libopenvino_intel_gpu_plugin.so!cldnn::program::build_program(cldnn::program * const this, bool is_internal) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/program.cpp:491)
libopenvino_intel_gpu_plugin.so!cldnn::program::program(cldnn::program * const this, cldnn::engine & engine_ref, const cldnn::topology & topology, const ov::intel_gpu::ExecutionConfig & config, std::shared_ptr<ov::threading::IStreamsExecutor> task_executor, std::shared_ptr<cldnn::ICompilationContext> compilation_context, bool is_internal, bool no_optimizations, bool is_body_program) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/program.cpp:171)
libopenvino_intel_gpu_plugin.so!std::_Construct<cldnn::program, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(cldnn::program * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libopenvino_intel_gpu_plugin.so!std::allocator_traits<std::allocator<void> >::construct<cldnn::program, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(cldnn::program * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libopenvino_intel_gpu_plugin.so!std::_Sp_counted_ptr_inplace<cldnn::program, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(std::_Sp_counted_ptr_inplace<cldnn::program, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libopenvino_intel_gpu_plugin.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<cldnn::program, std::allocator<void>, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, cldnn::program *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libopenvino_intel_gpu_plugin.so!std::__shared_ptr<cldnn::program, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(std::__shared_ptr<cldnn::program, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libopenvino_intel_gpu_plugin.so!std::shared_ptr<cldnn::program>::shared_ptr<std::allocator<void>, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>(std::shared_ptr<cldnn::program> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libopenvino_intel_gpu_plugin.so!std::make_shared<cldnn::program, cldnn::engine&, cldnn::topology const&, ov::intel_gpu::ExecutionConfig const&, std::shared_ptr<ov::threading::IStreamsExecutor>&, std::shared_ptr<cldnn::ICompilationContext>&, bool&, bool&, bool&>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libopenvino_intel_gpu_plugin.so!cldnn::program::build_program(cldnn::engine & engine, const cldnn::topology & topology, const ov::intel_gpu::ExecutionConfig & config, std::shared_ptr<ov::threading::IStreamsExecutor> task_executor, std::shared_ptr<cldnn::ICompilationContext> compilation_context, bool is_internal, bool no_optimizations, bool is_body_program) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/graph/program.cpp:288)
libopenvino_intel_gpu_plugin.so!ov::intel_gpu::ProgramBuilder::build(ov::intel_gpu::ProgramBuilder * const this, const std::vector<std::shared_ptr<ov::Node>, std::allocator<std::shared_ptr<ov::Node> > > & ops, bool is_inner_program) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/plugin/program_builder.cpp:154)
libopenvino_intel_gpu_plugin.so!ov::intel_gpu::ProgramBuilder::ProgramBuilder(ov::intel_gpu::ProgramBuilder * const this, std::shared_ptr<ov::Model> model, cldnn::engine & engine, const ov::intel_gpu::ExecutionConfig & config, std::shared_ptr<ov::threading::IStreamsExecutor> task_executor, std::shared_ptr<cldnn::ICompilationContext> compilation_context, bool is_inner_program) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/plugin/program_builder.cpp:110)
libopenvino_intel_gpu_plugin.so!std::_Construct<ov::intel_gpu::ProgramBuilder, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(ov::intel_gpu::ProgramBuilder * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libopenvino_intel_gpu_plugin.so!std::allocator_traits<std::allocator<void> >::construct<ov::intel_gpu::ProgramBuilder, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(ov::intel_gpu::ProgramBuilder * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libopenvino_intel_gpu_plugin.so!std::_Sp_counted_ptr_inplace<ov::intel_gpu::ProgramBuilder, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(std::_Sp_counted_ptr_inplace<ov::intel_gpu::ProgramBuilder, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libopenvino_intel_gpu_plugin.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<ov::intel_gpu::ProgramBuilder, std::allocator<void>, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, ov::intel_gpu::ProgramBuilder *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libopenvino_intel_gpu_plugin.so!std::__shared_ptr<ov::intel_gpu::ProgramBuilder, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(std::__shared_ptr<ov::intel_gpu::ProgramBuilder, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libopenvino_intel_gpu_plugin.so!std::shared_ptr<ov::intel_gpu::ProgramBuilder>::shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>(std::shared_ptr<ov::intel_gpu::ProgramBuilder> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libopenvino_intel_gpu_plugin.so!std::make_shared<ov::intel_gpu::ProgramBuilder, std::shared_ptr<ov::Model>&, cldnn::engine&, ov::intel_gpu::ExecutionConfig const&>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libopenvino_intel_gpu_plugin.so!ov::intel_gpu::Graph::Graph(ov::intel_gpu::Graph * const this, std::shared_ptr<ov::Model> model, const ov::intel_gpu::RemoteContextImpl::Ptr & context, const ov::intel_gpu::ExecutionConfig & config, uint16_t stream_id) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/plugin/graph.cpp:44)
libopenvino_intel_gpu_plugin.so!std::_Construct<ov::intel_gpu::Graph, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(ov::intel_gpu::Graph * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libopenvino_intel_gpu_plugin.so!std::allocator_traits<std::allocator<void> >::construct<ov::intel_gpu::Graph, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(ov::intel_gpu::Graph * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libopenvino_intel_gpu_plugin.so!std::_Sp_counted_ptr_inplace<ov::intel_gpu::Graph, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(std::_Sp_counted_ptr_inplace<ov::intel_gpu::Graph, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libopenvino_intel_gpu_plugin.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<ov::intel_gpu::Graph, std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, ov::intel_gpu::Graph *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libopenvino_intel_gpu_plugin.so!std::__shared_ptr<ov::intel_gpu::Graph, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(std::__shared_ptr<ov::intel_gpu::Graph, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libopenvino_intel_gpu_plugin.so!std::shared_ptr<ov::intel_gpu::Graph>::shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>(std::shared_ptr<ov::intel_gpu::Graph> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libopenvino_intel_gpu_plugin.so!std::make_shared<ov::intel_gpu::Graph, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&, int>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libopenvino_intel_gpu_plugin.so!ov::intel_gpu::CompiledModel::CompiledModel(ov::intel_gpu::CompiledModel * const this, std::shared_ptr<ov::Model> model, const std::shared_ptr<ov::IPlugin const> & plugin, ov::intel_gpu::RemoteContextImpl::Ptr context, const ov::intel_gpu::ExecutionConfig & config) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/plugin/compiled_model.cpp:65)
libopenvino_intel_gpu_plugin.so!std::_Construct<ov::intel_gpu::CompiledModel, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(ov::intel_gpu::CompiledModel * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libopenvino_intel_gpu_plugin.so!std::allocator_traits<std::allocator<void> >::construct<ov::intel_gpu::CompiledModel, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(ov::intel_gpu::CompiledModel * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libopenvino_intel_gpu_plugin.so!std::_Sp_counted_ptr_inplace<ov::intel_gpu::CompiledModel, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(std::_Sp_counted_ptr_inplace<ov::intel_gpu::CompiledModel, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libopenvino_intel_gpu_plugin.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<ov::intel_gpu::CompiledModel, std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, ov::intel_gpu::CompiledModel *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libopenvino_intel_gpu_plugin.so!std::__shared_ptr<ov::intel_gpu::CompiledModel, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(std::__shared_ptr<ov::intel_gpu::CompiledModel, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libopenvino_intel_gpu_plugin.so!std::shared_ptr<ov::intel_gpu::CompiledModel>::shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>(std::shared_ptr<ov::intel_gpu::CompiledModel> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libopenvino_intel_gpu_plugin.so!std::make_shared<ov::intel_gpu::CompiledModel, std::shared_ptr<ov::Model>&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::intel_gpu::RemoteContextImpl>&, ov::intel_gpu::ExecutionConfig&>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libopenvino_intel_gpu_plugin.so!ov::intel_gpu::Plugin::compile_model(const ov::intel_gpu::Plugin * const this, const std::shared_ptr<ov::Model const> & model, const ov::AnyMap & orig_config) (/…/build/Debug/EP/src/OpenVINO/src/plugins/intel_gpu/src/plugin/plugin.cpp:255)
libopenvino.so.2530!ov::Plugin::compile_model(const ov::Plugin * const this, const std::shared_ptr<ov::Model const> & model, const ov::AnyMap & properties) (/…/build/Debug/EP/src/OpenVINO/src/inference/src/dev/plugin.cpp:53)
libopenvino.so.2530!ov::CoreImpl::compile_model(const ov::CoreImpl * const this, const std::shared_ptr<ov::Model const> & model_, const std::string & device_name, const ov::AnyMap & config) (/…/build/Debug/EP/src/OpenVINO/src/inference/src/dev/core_impl.cpp:850)
libopenvino_hetero_plugin.so!ov::hetero::CompiledModel::compile_model(ov::hetero::CompiledModel * const this, const std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > > & submodels) (/…/build/Debug/EP/src/OpenVINO/src/plugins/hetero/src/compiled_model.cpp:74)
libopenvino_hetero_plugin.so!ov::hetero::CompiledModel::CompiledModel(ov::hetero::CompiledModel * const this, const std::shared_ptr<ov::Model> & model, const std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > > & submodels, const ov::hetero::SubgraphsMappingInfo & mapping_info, const std::shared_ptr<ov::IPlugin const> & plugin, ov::hetero::RemoteContext::Ptr context, const ov::hetero::Configuration & cfg) (/…/build/Debug/EP/src/OpenVINO/src/plugins/hetero/src/compiled_model.cpp:34)
libopenvino_hetero_plugin.so!std::_Construct<ov::hetero::CompiledModel, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(ov::hetero::CompiledModel * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libopenvino_hetero_plugin.so!std::allocator_traits<std::allocator<void> >::construct<ov::hetero::CompiledModel, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(ov::hetero::CompiledModel * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libopenvino_hetero_plugin.so!std::_Sp_counted_ptr_inplace<ov::hetero::CompiledModel, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(std::_Sp_counted_ptr_inplace<ov::hetero::CompiledModel, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libopenvino_hetero_plugin.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<ov::hetero::CompiledModel, std::allocator<void>, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, ov::hetero::CompiledModel *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libopenvino_hetero_plugin.so!std::__shared_ptr<ov::hetero::CompiledModel, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(std::__shared_ptr<ov::hetero::CompiledModel, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libopenvino_hetero_plugin.so!std::shared_ptr<ov::hetero::CompiledModel>::shared_ptr<std::allocator<void>, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>(std::shared_ptr<ov::hetero::CompiledModel> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libopenvino_hetero_plugin.so!std::make_shared<ov::hetero::CompiledModel, std::shared_ptr<ov::Model>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<ov::Model> > > >&, ov::hetero::SubgraphsMappingInfo&, std::shared_ptr<ov::IPlugin const>, std::shared_ptr<ov::hetero::RemoteContext>&, ov::hetero::Configuration&>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libopenvino_hetero_plugin.so!ov::hetero::Plugin::compile_model(const ov::hetero::Plugin * const this, const std::shared_ptr<ov::Model const> & model, const ov::AnyMap & properties) (/…/build/Debug/EP/src/OpenVINO/src/plugins/hetero/src/plugin.cpp:119)
libopenvino.so.2530!ov::Plugin::compile_model(const ov::Plugin * const this, const std::shared_ptr<ov::Model const> & model, const ov::AnyMap & properties) (/…/build/Debug/EP/src/OpenVINO/src/inference/src/dev/plugin.cpp:53)
libopenvino.so.2530!ov::CoreImpl::compile_model(const ov::CoreImpl * const this, const std::shared_ptr<ov::Model const> & model_, const std::string & device_name, const ov::AnyMap & config) (/…/build/Debug/EP/src/OpenVINO/src/inference/src/dev/core_impl.cpp:850)
libopenvino.so.2530!ov::Core::compile_model(ov::Core * const this, const std::shared_ptr<ov::Model const> & model, const std::string & device_name, const ov::AnyMap & config) (/…/build/Debug/EP/src/OpenVINO/src/inference/src/cpp/core.cpp:109)
libonnxruntime_providers_openvino.so!operator()(const struct {...} * const __closure) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/ov_interface.cc:165)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::OvExceptionBoundary<onnxruntime::openvino_ep::OVCore::CompileModel(std::shared_ptr<const ov::Model>&, std::string&, ov::AnyMap&, bool, const std::string&)::<lambda()>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(struct {...} &&, std::format_string &&)(struct {...} && func, std::format_string && fmt) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/ov_interface.cc:22)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::OVCore::CompileModel(onnxruntime::openvino_ep::OVCore * const this, std::shared_ptr<ov::Model const> & ie_cnn_network, std::string & hw_target, ov::AnyMap & device_config, bool enable_causallm, const std::string & name) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/ov_interface.cc:175)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::BasicBackend::BasicBackend(onnxruntime::openvino_ep::BasicBackend * const this, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> > & model_proto, onnxruntime::openvino_ep::SessionContext & session_context, const onnxruntime::openvino_ep::SubGraphContext & subgraph_context, onnxruntime::openvino_ep::SharedContext & shared_context, onnxruntime::openvino_ep::ptr_stream_t & model_stream) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/backends/basic_backend.cc:114)
libonnxruntime_providers_openvino.so!std::_Construct<onnxruntime::openvino_ep::BasicBackend, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(onnxruntime::openvino_ep::BasicBackend * __p) (/usr/include/c++/14/bits/stl_construct.h:119)
libonnxruntime_providers_openvino.so!std::allocator_traits<std::allocator<void> >::construct<onnxruntime::openvino_ep::BasicBackend, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(onnxruntime::openvino_ep::BasicBackend * __p) (/usr/include/c++/14/bits/alloc_traits.h:706)
libonnxruntime_providers_openvino.so!std::_Sp_counted_ptr_inplace<onnxruntime::openvino_ep::BasicBackend, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(std::_Sp_counted_ptr_inplace<onnxruntime::openvino_ep::BasicBackend, std::allocator<void>, (__gnu_cxx::_Lock_policy)2> * const this, std::allocator<void> __a) (/usr/include/c++/14/bits/shared_ptr_base.h:607)
libonnxruntime_providers_openvino.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<onnxruntime::openvino_ep::BasicBackend, std::allocator<void>, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this, onnxruntime::openvino_ep::BasicBackend *& __p, std::_Sp_alloc_shared_tag<std::allocator<void> > __a) (/usr/include/c++/14/bits/shared_ptr_base.h:969)
libonnxruntime_providers_openvino.so!std::__shared_ptr<onnxruntime::openvino_ep::BasicBackend, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(std::__shared_ptr<onnxruntime::openvino_ep::BasicBackend, (__gnu_cxx::_Lock_policy)2> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr_base.h:1713)
libonnxruntime_providers_openvino.so!std::shared_ptr<onnxruntime::openvino_ep::BasicBackend>::shared_ptr<std::allocator<void>, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>(std::shared_ptr<onnxruntime::openvino_ep::BasicBackend> * const this, std::_Sp_alloc_shared_tag<std::allocator<void> > __tag) (/usr/include/c++/14/bits/shared_ptr.h:463)
libonnxruntime_providers_openvino.so!std::make_shared<onnxruntime::openvino_ep::BasicBackend, std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> >&, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SubGraphContext const&, onnxruntime::openvino_ep::SharedContext&, std::unique_ptr<onnxruntime::openvino_ep::ModelBlobWrapper, std::default_delete<onnxruntime::openvino_ep::ModelBlobWrapper> >&>() (/usr/include/c++/14/bits/shared_ptr.h:1008)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::BackendFactory::MakeBackend(std::unique_ptr<onnx::ModelProto, std::default_delete<onnx::ModelProto> > & model_proto, onnxruntime::openvino_ep::SessionContext & session_context, const onnxruntime::openvino_ep::SubGraphContext & subgraph_context, onnxruntime::openvino_ep::SharedContext & shared_context, onnxruntime::openvino_ep::ptr_stream_t & model_stream) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/backends/backend_factory.cc:27)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::BackendManager::BackendManager(onnxruntime::openvino_ep::BackendManager * const this, onnxruntime::openvino_ep::SessionContext & session_context, onnxruntime::openvino_ep::SharedContext & shared_context, const onnxruntime::Node & fused_node, const onnxruntime::GraphViewer & subgraph, const onnxruntime::logging::Logger & logger, onnxruntime::openvino_ep::EPCtxHandler & ep_ctx_handle) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/backend_manager.cc:133)
libonnxruntime_providers_openvino.so!std::construct_at<onnxruntime::openvino_ep::BackendManager, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SharedContext&, onnxruntime::Node const&, onnxruntime::GraphViewer const&, onnxruntime::logging::Logger const&, onnxruntime::openvino_ep::EPCtxHandler&>(onnxruntime::openvino_ep::BackendManager * __location) (/usr/include/c++/14/bits/stl_construct.h:97)
libonnxruntime_providers_openvino.so!std::allocator_traits<std::allocator<std::_List_node<onnxruntime::openvino_ep::BackendManager> > >::construct<onnxruntime::openvino_ep::BackendManager, onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SharedContext&, onnxruntime::Node const&, onnxruntime::GraphViewer const&, onnxruntime::logging::Logger const&, onnxruntime::openvino_ep::EPCtxHandler&>(std::allocator_traits<std::allocator<std::_List_node<onnxruntime::openvino_ep::BackendManager> > >::allocator_type & __a, onnxruntime::openvino_ep::BackendManager * __p) (/usr/include/c++/14/bits/alloc_traits.h:577)
libonnxruntime_providers_openvino.so!std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> >::_M_create_node<onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SharedContext&, onnxruntime::Node const&, onnxruntime::GraphViewer const&, onnxruntime::logging::Logger const&, onnxruntime::openvino_ep::EPCtxHandler&>(std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> > * const this) (/usr/include/c++/14/bits/stl_list.h:713)
libonnxruntime_providers_openvino.so!std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> >::_M_insert<onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SharedContext&, onnxruntime::Node const&, onnxruntime::GraphViewer const&, onnxruntime::logging::Logger const&, onnxruntime::openvino_ep::EPCtxHandler&>(std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> > * const this, std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> >::iterator __position) (/usr/include/c++/14/bits/stl_list.h:2004)
libonnxruntime_providers_openvino.so!std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> >::emplace_back<onnxruntime::openvino_ep::SessionContext&, onnxruntime::openvino_ep::SharedContext&, onnxruntime::Node const&, onnxruntime::GraphViewer const&, onnxruntime::logging::Logger const&, onnxruntime::openvino_ep::EPCtxHandler&>(std::__cxx11::list<onnxruntime::openvino_ep::BackendManager, std::allocator<onnxruntime::openvino_ep::BackendManager> > * const this) (/usr/include/c++/14/bits/stl_list.h:1321)
libonnxruntime_providers_openvino.so!onnxruntime::openvino_ep::OpenVINOExecutionProvider::Compile(onnxruntime::openvino_ep::OpenVINOExecutionProvider * const this, const std::vector<onnxruntime::IExecutionProvider::FusedNodeAndGraph, std::allocator<onnxruntime::IExecutionProvider::FusedNodeAndGraph> > & fused_nodes, std::vector<onnxruntime::NodeComputeInfo, std::allocator<onnxruntime::NodeComputeInfo> > & node_compute_funcs) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/providers/openvino/openvino_execution_provider.cc:147)
libonnxruntime.so.1!onnxruntime::PartitionOnnxFormatModelImpl(onnxruntime::Graph & graph, onnxruntime::FuncManager & func_mgr, onnxruntime::KernelRegistryManager & kernel_registry_mgr, onnxruntime::KernelRegistry & fused_kernel_registry, onnxruntime::IExecutionProvider & current_ep, onnxruntime::GraphPartitioner::Mode mode, int & fused_node_unique_id, const onnxruntime::layout_transformation::TransformLayoutFunction & transform_layout_fn, const onnxruntime::layout_transformation::DebugGraphFn & debug_graph_fn, const onnxruntime::CheckLoadCancellationFn & check_load_cancellation_fn, const onnxruntime::logging::Logger & logger, onnxruntime::IResourceAccountant * resource_accountant, const onnxruntime::GraphOptimizerRegistry & graph_optimizer_registry, bool disable_model_compile) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/framework/graph_partitioner.cc:577)
libonnxruntime.so.1!onnxruntime::PartitionOnnxFormatModel(const onnxruntime::(anonymous namespace)::PartitionParams & partition_params, onnxruntime::GraphPartitioner::Mode mode, const onnxruntime::ExecutionProviders & execution_providers, onnxruntime::KernelRegistryManager & kernel_registry_manager, const std::optional<onnxruntime::InlinedHashMap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::unique_ptr<onnxruntime::IResourceAccountant, std::default_delete<onnxruntime::IResourceAccountant> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::unique_ptr<onnxruntime::IResourceAccountant, std::default_delete<onnxruntime::IResourceAccountant> > > > > > & acc_map, const onnxruntime::GraphOptimizerRegistry & graph_optimizer_registry, const onnxruntime::logging::Logger & logger, bool disable_model_compile) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/framework/graph_partitioner.cc:1032)
libonnxruntime.so.1!onnxruntime::GraphPartitioner::Partition(const onnxruntime::GraphPartitioner * const this, onnxruntime::Graph & graph, onnxruntime::FuncManager & func_mgr, const onnxruntime::layout_transformation::TransformLayoutFunction & transform_layout_function, const onnxruntime::ConfigOptions & config_options, const onnxruntime::logging::Logger & logger, onnxruntime::GraphPartitioner::Mode mode, const onnxruntime::epctx::ModelGenOptions & ep_context_gen_options, const onnxruntime::layout_transformation::DebugGraphFn & debug_graph_fn) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/framework/graph_partitioner.cc:1316)
libonnxruntime.so.1!onnxruntime::InferenceSession::TransformGraph(onnxruntime::InferenceSession * const this, onnxruntime::Graph & graph, bool saving_model_in_ort_format) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/session/inference_session.cc:1448)
libonnxruntime.so.1!onnxruntime::InferenceSession::Initialize(onnxruntime::InferenceSession * const this) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/session/inference_session.cc:2286)
libonnxruntime.so.1!InitializeSession(const OrtSessionOptions * options, onnxruntime::InferenceSession & sess, OrtPrepackedWeightsContainer * prepacked_weights_container) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/session/utils.cc:364)
libonnxruntime.so.1!OrtApis::CreateSessionFromArray(const OrtEnv * env, const void * model_data, size_t model_data_length, const OrtSessionOptions * options, OrtSession ** out) (/…/build/Debug/EP/src/ONNXRuntime/onnxruntime/core/session/onnxruntime_c_api.cc:745)
lib…ONNX.so!Ort::Session::Session(Ort::Session * const this, const Ort::Env & env, const void * model_data, size_t model_data_length, const Ort::SessionOptions & options) (/…/build/Debug/EP/include/onnxruntime/onnxruntime_cxx_inline.h:1810)
…

GDB highlights:

-exec p/x $_siginfo._sifields._sigfault.si_addr
$3 = 0x7fbb1469c000
-exec info proc mappings
…
0x00007fbb14684000 0x00007fbb14685000 0x1000             0x289ce0000        rw-s  /dev/dri/renderD128 
0x00007fbb14686000 0x00007fbb14687000 0x1000             0x289cdf000        rw-s  /dev/dri/renderD128 
0x00007fbb14688000 0x00007fbb14689000 0x1000             0x289cde000        rw-s  /dev/dri/renderD128 
0x00007fbb1468a000 0x00007fbb1468b000 0x1000             0x289cdd000        rw-s  /dev/dri/renderD128 
0x00007fbb1468c000 0x00007fbb1469c000 0x10000            0x289ccd000        rw-s  /dev/dri/renderD128 
0x00007fbb1469d000 0x00007fbb1469e000 0x1000             0x16e982000        rw-s  /dev/dri/renderD128 
0x00007fbb1469f000 0x00007fbb146a0000 0x1000             0x16e981000        rw-s  /dev/dri/renderD128 
0x00007fbb146a1000 0x00007fbb146a2000 0x1000             0x16e980000        rw-s  /dev/dri/renderD128 
0x00007fbb146a3000 0x00007fbb146a4000 0x1000             0x16e97f000        rw-s  /dev/dri/renderD128 
0x00007fbb146a5000 0x00007fbb146a6000 0x1000             0x16e97e000        rw-s  /dev/dri/renderD128 
0x00007fbb146a7000 0x00007fbb146a8000 0x1000             0x16e97d000        rw-s  /dev/dri/renderD128 
…
-exec p ptr1
$4 = (unsigned char *) 0x7fbb1468c000 ""
-exec p j
$5 = 65536
-exec p &ptr1[j]
$6 = (unsigned char *) 0x7fbb1469c000 <error: Cannot access memory at address 0x7fbb1469c000>
Image

It seems that the loop is only guarded by the size of mem0 and doesn't contemplate mem0 and mem1 not being the same size, so the segfault occurs when the loop reads beyond mem1 through ptr1[j].

Step-by-step reproduction

In my environment, the segfault happens every time, but I'm using a custom model that I'm not able to share. I'm running inference using ONNX Runtime 1.23.0 with the OpenVINO execution provider set for HETERO:GPU,CPU. I'm building both OpenVINO and ONNX Runtime from source. I'm running this on Meteor Lake. /proc/cpuinfo reports it as Intel(R) Core(TM) Ultra 7 165U.

Relevant log output

Issue submission checklist

  • I'm reporting an issue. It's not a question.
  • I checked the problem with the documentation, FAQ, open issues, Stack Overflow, etc., and have not found a solution.
  • There is reproducer code and related data files such as images, videos, models, etc.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions