[ https://issues.apache.org/jira/browse/IGNITE-5208?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tolga HOŞGÖR updated IGNITE-5208: --------------------------------- Description: The following segfault happens when: - using multiple caches (suffixed with number as in X_\{number\}), - caches contain same type of object but not the same objects, - doing multithreaded `::Put` operation, only one put is done on each cache concurrently, independent caches (X_1, X_2, ...) can be operated on and called `::Put` on concurrently, but that should not be relevant as cache api is thread safe. {code:none} C [test+0xf8116a] std::less<int>::operator()(int const&, int const&) const+0x14 C [test+0x1106305] std::_Rb_tree<int, std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> >, std::_Select1st<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >*, std::_Rb_tree_node_base*, int const&)+0x41 C [test+0x1105a9d] std::_Rb_tree<int, std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> >, std::_Select1st<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::find(int const&)+0x45 C [test+0x1104e7f] std::map<int, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot>, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::find(int const&)+0x23 C [test+0x1104031] ignite::impl::binary::BinaryTypeManager::GetHandler(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x6f C [test+0xe6de2d] void ignite::impl::binary::BinaryWriterImpl::WriteTopObject<std::shared_ptr<test::data> >(std::shared_ptr<test::data> const&)+0xbb C [test+0xe6cd48] ignite::impl::In2Operation<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> >::ProcessInput(ignite::impl::binary::BinaryWriterImpl&)+0x3e C [test+0x1128cf1] ignite::impl::interop::InteropTarget::WriteTo(ignite::impl::interop::InteropMemory*, ignite::impl::InputOperation&, ignite::IgniteError&)+0xa9 C [test+0x1128f67] ignite::impl::interop::InteropTarget::OutOp(int, ignite::impl::InputOperation&, ignite::IgniteError&)+0x65 C [test+0x1125f41] ignite::impl::cache::CacheImpl::Put(ignite::impl::InputOperation&, ignite::IgniteError&)+0x2d C [test+0xe5539a] ignite::cache::Cache<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> >::Put(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<test::data> const&, ignite::IgniteError&)+0x52 {code} was: The following segfault happens when: - using multiple caches (suffixed with number as in X_\{number\}), - caches contain same type of object but not the same objects, - doing multithreaded `::Put` operation, only one put is done on *one* cache concurrently, but that should not be relevant as cache api is thread safe. {code:none} C [test+0xf8116a] std::less<int>::operator()(int const&, int const&) const+0x14 C [test+0x1106305] std::_Rb_tree<int, std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> >, std::_Select1st<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >*, std::_Rb_tree_node_base*, int const&)+0x41 C [test+0x1105a9d] std::_Rb_tree<int, std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> >, std::_Select1st<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::find(int const&)+0x45 C [test+0x1104e7f] std::map<int, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot>, std::less<int>, std::allocator<std::pair<int const, ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >::find(int const&)+0x23 C [test+0x1104031] ignite::impl::binary::BinaryTypeManager::GetHandler(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x6f C [test+0xe6de2d] void ignite::impl::binary::BinaryWriterImpl::WriteTopObject<std::shared_ptr<test::data> >(std::shared_ptr<test::data> const&)+0xbb C [test+0xe6cd48] ignite::impl::In2Operation<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> >::ProcessInput(ignite::impl::binary::BinaryWriterImpl&)+0x3e C [test+0x1128cf1] ignite::impl::interop::InteropTarget::WriteTo(ignite::impl::interop::InteropMemory*, ignite::impl::InputOperation&, ignite::IgniteError&)+0xa9 C [test+0x1128f67] ignite::impl::interop::InteropTarget::OutOp(int, ignite::impl::InputOperation&, ignite::IgniteError&)+0x65 C [test+0x1125f41] ignite::impl::cache::CacheImpl::Put(ignite::impl::InputOperation&, ignite::IgniteError&)+0x2d C [test+0xe5539a] ignite::cache::Cache<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> >::Put(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<test::data> const&, ignite::IgniteError&)+0x52 {code} > C++ Segfault on Put > ------------------- > > Key: IGNITE-5208 > URL: https://issues.apache.org/jira/browse/IGNITE-5208 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.0 > Reporter: Tolga HOŞGÖR > Priority: Critical > Labels: c++ > > The following segfault happens when: > - using multiple caches (suffixed with number as in X_\{number\}), > - caches contain same type of object but not the same objects, > - doing multithreaded `::Put` operation, only one put is done on each cache > concurrently, independent caches (X_1, X_2, ...) can be operated on and > called `::Put` on concurrently, but that should not be relevant as cache api > is thread safe. > {code:none} > C [test+0xf8116a] std::less<int>::operator()(int const&, int const&) > const+0x14 > C [test+0x1106305] std::_Rb_tree<int, std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::_Select1st<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >, std::less<int>, std::allocator<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >*, std::_Rb_tree_node_base*, int const&)+0x41 > C [test+0x1105a9d] std::_Rb_tree<int, std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > >, std::_Select1st<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > >, std::less<int>, std::allocator<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > > >::find(int const&)+0x45 > C [test+0x1104e7f] std::map<int, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot>, > std::less<int>, std::allocator<std::pair<int const, > ignite::common::concurrent::SharedPointer<ignite::impl::binary::BinaryTypeSnapshot> > > > >::find(int const&)+0x23 > C [test+0x1104031] > ignite::impl::binary::BinaryTypeManager::GetHandler(std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char> > const&, int)+0x6f > C [test+0xe6de2d] void > ignite::impl::binary::BinaryWriterImpl::WriteTopObject<std::shared_ptr<test::data> > >(std::shared_ptr<test::data> const&)+0xbb > C [test+0xe6cd48] > ignite::impl::In2Operation<std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> > >::ProcessInput(ignite::impl::binary::BinaryWriterImpl&)+0x3e > C [test+0x1128cf1] > ignite::impl::interop::InteropTarget::WriteTo(ignite::impl::interop::InteropMemory*, > ignite::impl::InputOperation&, ignite::IgniteError&)+0xa9 > C [test+0x1128f67] ignite::impl::interop::InteropTarget::OutOp(int, > ignite::impl::InputOperation&, ignite::IgniteError&)+0x65 > C [test+0x1125f41] > ignite::impl::cache::CacheImpl::Put(ignite::impl::InputOperation&, > ignite::IgniteError&)+0x2d > C [test+0xe5539a] ignite::cache::Cache<std::__cxx11::basic_string<char, > std::char_traits<char>, std::allocator<char> >, std::shared_ptr<test::data> > >::Put(std::__cxx11::basic_string<char, std::char_traits<char>, > std::allocator<char> > const&, std::shared_ptr<test::data> const&, > ignite::IgniteError&)+0x52 > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)