[ 
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 *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}

  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 *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}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to