stonedb icon indicating copy to clipboard operation
stonedb copied to clipboard

bug: Assertion failed in traceable_object

Open RingsC opened this issue 1 year ago • 3 comments

Have you read the Contributing Guidelines on issues?

Please confirm if bug report does NOT exists already ?

  • [X] I confirm there is no existing issue for this

Describe the problem

Assertion failed when it use source to insert data inot stonedb.

50	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f53668e9859 in __GI_abort () at abort.c:79
#2  0x00007f53668e9729 in __assert_fail_base (fmt=0x7f5366a7f588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55efc503595a "m_sizeAllocated == 0", file=0x55efc5035910 "/home/lihao/workshop/stonedb-ver-1/storage/tianmu/mm/traceable_object.cpp", line=131, 
    function=<optimized out>) at assert.c:92
#3  0x00007f53668fafd6 in __GI___assert_fail (assertion=0x55efc503595a "m_sizeAllocated == 0", file=0x55efc5035910 "/home/lihao/workshop/stonedb-ver-1/storage/tianmu/mm/traceable_object.cpp", line=131, 
    function=0x55efc50358d8 "virtual Tianmu::mm::TraceableObject::~TraceableObject()") at assert.c:101
#4  0x000055efc4580486 in Tianmu::mm::TraceableObject::~TraceableObject (this=0x7f4ff0000ba0, __in_chrg=<optimized out>) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/mm/traceable_object.cpp:131
#5  0x000055efc4602e58 in Tianmu::core::Pack::~Pack (this=0x7f4ff0000ba0, __in_chrg=<optimized out>) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/data/pack.h:45
#6  0x000055efc4813770 in Tianmu::core::PackInt::PackInt (this=0x7f4ff0000ba0, dpn=0x7f5060900000, pc=..., s=0x7f5038020ff0) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/data/pack_int.cpp:33
#7  0x000055efc46173db in __gnu_cxx::new_allocator<Tianmu::core::PackInt>::construct<Tianmu::core::PackInt<Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> > (
    this=0x7f52c97f8a9f, __p=0x7f4ff0000ba0) at /usr/include/c++/9/ext/new_allocator.h:146
#8  0x000055efc4616018 in std::allocator_traits<std::allocator<Tianmu::core::PackInt> >::construct<Tianmu::core::PackInt<Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> > (__a=..., __p=0x7f4ff0000ba0) at /usr/include/c++/9/bits/alloc_traits.h:483
#9  0x000055efc46138bb in std::_Sp_counted_ptr_inplace<Tianmu::core::PackInt, std::allocator<Tianmu::core::PackInt>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> (this=0x7f4ff0000b90, __a=...) at /usr/include/c++/9/bits/shared_ptr_base.h:548
#10 0x000055efc4610304 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<Tianmu::core::PackInt, std::allocator<Tianmu::core::PackInt>, Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> (this=0x7f52c97f8cb8, __p=@0x7f52c97f8cb0: 0x0, __a=...) at /usr/include/c++/9/bits/shared_ptr_base.h:679
#11 0x000055efc460cb6c in std::__shared_ptr<Tianmu::core::PackInt, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<Tianmu::core::PackInt>, Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> (this=0x7f52c97f8cb0, __tag=...) at /usr/include/c++/9/bits/shared_ptr_base.h:1344
#12 0x000055efc460a537 in std::shared_ptr<Tianmu::core::PackInt>::shared_ptr<std::allocator<Tianmu::core::PackInt>, Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> (
    this=0x7f52c97f8cb0, __tag=...) at /usr/include/c++/9/bits/shared_ptr.h:359
#13 0x000055efc4607f8b in std::allocate_shared<Tianmu::core::PackInt, std::allocator<Tianmu::core::PackInt>, Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> (__a=...)
    at /usr/include/c++/9/bits/shared_ptr.h:702
#14 0x000055efc460555a in std::make_shared<Tianmu::core::PackInt, Tianmu::core::DPN*&, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty> const&, Tianmu::core::ColumnShare*&> () at /usr/include/c++/9/bits/shared_ptr.h:718
#15 0x000055efc45f822e in Tianmu::core::TianmuAttr::Fetch (this=0x7f5018010d00, pc=...) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/vc/tianmu_attr.cpp:897
#16 0x000055efc4604fc1 in Tianmu::core::DataCache::GetOrFetchObject<Tianmu::core::Pack, Tianmu::core::ObjectId<(Tianmu::core::COORD_TYPE)0, 3, Tianmu::core::object_id_helper::empty>, Tianmu::core::TianmuAttr> (this=0x55efc5fb7980, coord_=..., fetcher_=0x7f5018010d00)
    at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/core/data_cache.h:234
#17 0x000055efc45fb840 in Tianmu::core::TianmuAttr::CopyPackForWrite (this=0x7f5018010d00, pi=1) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/vc/tianmu_attr.cpp:1312
#18 0x000055efc45f856e in Tianmu::core::TianmuAttr::PreparePackForLoad (this=0x7f5018010d00) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/vc/tianmu_attr.cpp:912
#19 0x000055efc45f85f6 in Tianmu::core::TianmuAttr::LoadData (this=0x7f5018010d00, nvs=0x7f5018017850, conn_info=0x7f501800d9f0) at /home/lihao/workshop/stonedb-ver-1/storage/tianmu/vc/tianmu_attr.cpp:921
#20 0x000055efc452f4fd in std::__invoke_impl<void, void (Tianmu::core::TianmuAttr::*&)(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*), Tianmu::core::TianmuAttr<Tianmu::loader::ValueCache*&, Tianmu::core::Transaction*&>*&> (__f=
    @0x7f501800fbc8: (void (Tianmu::core::TianmuAttr::*)(class Tianmu::core::TianmuAttr * const, class Tianmu::loader::ValueCache *, class Tianmu::core::Transaction *)) 0x55efc45f858a <Tianmu::core::TianmuAttr::LoadData(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>, __t=@0x7f501800fbe8: 0x7f5018010d00) at /usr/include/c++/9/bits/invoke.h:73
#21 0x000055efc452edef in std::__invoke<void (Tianmu::core::TianmuAttr::*&)(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*), Tianmu::core::TianmuAttr*&, Tianmu::loader::ValueCache*&, Tianmu::core::Transaction*&> (__fn=
    @0x7f501800fbc8: (void (Tianmu::core::TianmuAttr::*)(class Tianmu::core::TianmuAttr * const, class Tianmu::loader::ValueCache *, class Tianmu::core::Transaction *)) 0x55efc45f858a <Tianmu::core::TianmuAttr::LoadData(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>) at /usr/include/c++/9/bits/invoke.h:95
#22 0x000055efc452e583 in std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>::__call<void, , 0ul, 1ul, 2ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (this=0x7f501800fbc8, __args=empty std::tuple) at /usr/include/c++/9/functional:400
#23 0x000055efc452d529 in std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>::operator()<, void>() (this=0x7f501800fbc8)
    at /usr/include/c++/9/functional:484
#24 0x000055efc452ba3f in std::__invoke_impl<void, std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>&>(std::__invoke_other, std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>&) (__f=...) at /usr/include/c++/9/bits/invoke.h:60
#25 0x000055efc452a2df in std::__invoke<std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>&>(std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>&) (__fn=...) at /usr/include/c++/9/bits/invoke.h:95
#26 0x000055efc4528aab in std::__future_base::_Task_state<std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}::operator()() const (this=0x7f501800fba0) at /usr/include/c++/9/future:1421
#27 0x000055efc452d600 in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>::operator()() const (this=0x7f52c97f9500) at /usr/include/c++/9/future:1362
#28 0x000055efc452bb0e in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::_Bind<void (Tianmu::core::TianmuAttr::*(Tianmu::core::TianmuAttr*, Tianmu::loader::ValueCache*, Tianmu::core::Transaction*))(Tianmu::loader::ValueCache*, Tianmu::core::Transaction*)>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void> >::_M_invoke(std::_Any_data const&) (__functor=...) at /usr/include/c++/9/bits/std_function.h:286
#29 0x000055efc4420aae in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const (this=0x7f52c97f9500) at /usr/include/c++/9/bits/std_function.h:688
#30 0x000055efc4419cd4 in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (this=0x7f501800fba0, __f=0x7f52c97f9500, __did_set=0x7f52c97f945f)
    at /usr/include/c++/9/future:561
#31 0x000055efc443284f in std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>*> (__f=
    @0x7f52c97f94a0: (void (std::__future_base::_State_baseV2::*)(class std::__future_base::_State_baseV2 * const, class std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x55efc4419c9a <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>, __t=@0x7f52c97f9470: 0x7f501800fba0) at /usr/include/c++/9/bits/invoke.h:73
#32 0x000055efc4429729 in std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) (__fn=
    @0x7f52c97f94a0: (void (std::__future_base::_State_baseV2::*)(class std::__future_base::_State_baseV2 * const, class std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>()> *, bool *)) 0x55efc4419c9a <std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>) at /usr/include/c++/9/bits/invoke.h:95
--Type <RET> for more, q to quit, c to continue without paging--q

m_sizeAllocated is 0 that leads the assertion failed.

Expected behavior

Makes assertion sucess.

How To Reproduce

No response

Environment

No response

Are you interested in submitting a PR to solve the problem?

  • [X] Yes, I will!

RingsC avatar Apr 24 '23 06:04 RingsC

You can try using the latest version of the code, which seems to have solved this problem

konghaiya avatar Apr 27 '23 06:04 konghaiya

You can try using the latest version of the code, which seems to have solved this problem

Ok, Nice

RingsC avatar Apr 27 '23 06:04 RingsC

When the server crashes randomly, the data will corruption, leads to this assertion failed. On with rocksdb 7.4. It works with RocksDB 6.xxx

RingsC avatar May 10 '23 06:05 RingsC