vircadia / vircadia-native-core

Vircadia open source agent-based metaverse ecosystem.
https://vircadia.com/
Other
531 stars 175 forks source link

Segfault in NetworkMaterial destructor #1463

Open daleglass opened 2 years ago

daleglass commented 2 years ago

Randomly popped up.

__gnu_cxx::__exchange_and_add(int __val, volatile _Atomic_word * __mem) (/usr/include/c++/11/ext/atomicity.h:66)
__gnu_cxx::__exchange_and_add_dispatch(int __val, _Atomic_word * __mem) (/usr/include/c++/11/ext/atomicity.h:101)
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2> * const this) (/usr/include/c++/11/bits/shared_ptr_base.h:165)
libmodel-networking.so!std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(std::__shared_count<(__gnu_cxx::_Lock_policy)2> * const this) (/usr/include/c++/11/bits/shared_ptr_base.h:705)
libmodel-networking.so!std::__shared_ptr<NetworkMaterial, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr(std::__shared_ptr<NetworkMaterial, (__gnu_cxx::_Lock_policy)2> * const this) (/usr/include/c++/11/bits/shared_ptr_base.h:1154)
libmodel-networking.so!std::shared_ptr<NetworkMaterial>::~shared_ptr(std::shared_ptr<NetworkMaterial> * const this) (/usr/include/c++/11/bits/shared_ptr.h:122)
libmodel-networking.so!std::_Destroy<std::shared_ptr<NetworkMaterial> >(std::shared_ptr<NetworkMaterial> * __pointer) (/usr/include/c++/11/bits/stl_construct.h:140)
libmodel-networking.so!std::_Destroy_aux<false>::__destroy<std::shared_ptr<NetworkMaterial>*>(std::shared_ptr<NetworkMaterial> * __first) (/usr/include/c++/11/bits/stl_construct.h:152)
libmodel-networking.so!std::_Destroy<std::shared_ptr<NetworkMaterial>*>() (/usr/include/c++/11/bits/stl_construct.h:185)
libmodel-networking.so!std::_Destroy<std::shared_ptr<NetworkMaterial>*, std::shared_ptr<NetworkMaterial> >() (/usr/include/c++/11/bits/alloc_traits.h:746)
libmodel-networking.so!std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > >::_M_erase_at_end(std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > >::pointer __pos, std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > > * const this) (/usr/include/c++/11/bits/stl_vector.h:1796)
libmodel-networking.so!std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > >::clear(std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > > * const this) (/usr/include/c++/11/bits/stl_vector.h:1499)
libmodel-networking.so!GeometryResource::resetTextures(GeometryResource * const this) (/home/dale/git/vircadia/vircadia-master/libraries/model-networking/src/model-networking/ModelCache.cpp:365)
libmodel-networking.so!GeometryResource::deleter(GeometryResource * const this) (/home/dale/git/vircadia/vircadia-master/libraries/model-networking/src/model-networking/ModelCache.cpp:352)
libnetworking.so!QtSharedPointer::ExternalRefCountData::destroy(QtSharedPointer::ExternalRefCountData * const this) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:149)
libnetworking.so!QSharedPointer<ResourceCacheSharedItems>::deref(QSharedPointer<ResourceCacheSharedItems>::Data * dd) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:458)
libnetworking.so!QSharedPointer<Resource>::deref(QSharedPointer<Resource>::Data * dd) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:454)
libnetworking.so!QSharedPointer<Resource>::deref(QSharedPointer<Resource> * const this) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:453)
libnetworking.so!QSharedPointer<Resource>::~QSharedPointer(QSharedPointer<Resource> * const this) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:310)
libnetworking.so!QMapNodeBase::callDestructorIfNecessary<QSharedPointer<Resource> >(QSharedPointer<Resource> & t) (/usr/include/qt5/QtCore/qmap.h:100)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:125)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::doDestroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:139)
libnetworking.so!QMapNode<int, QSharedPointer<Resource> >::destroySubTree(QMapNode<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:126)
libnetworking.so!QMapData<int, QSharedPointer<Resource> >::destroy(QMapData<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:249)
libnetworking.so!QMap<int, QSharedPointer<Resource> >::~QMap(QMap<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:338)
libnetworking.so!QMap<int, QSharedPointer<Resource> >::operator=(QMap<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:349)
libnetworking.so!QMap<int, QSharedPointer<Resource> >::clear(QMap<int, QSharedPointer<Resource> > * const this) (/usr/include/qt5/QtCore/qmap.h:656)
libnetworking.so!ResourceCache::clearUnusedResources(ResourceCache * const this) (/home/dale/git/vircadia/vircadia-master/libraries/networking/src/ResourceCache.cpp:471)
Application::clearDomainOctreeDetails(Application * const this, bool clearAll) (/usr/include/qt5/QtCore/qsharedpointer_impl.h:301)
libQt5Core.so.5!QObject::event(QObject * const this, QEvent * e) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/kernel/qobject.cpp:1314)
libQt5Widgets.so.5!QApplicationPrivate::notify_helper(QApplicationPrivate * const this, QObject * receiver, QEvent * e) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/widgets/kernel/qapplication.cpp:3632)
libQt5Widgets.so.5!QApplication::notify(QApplication * const this, QObject * receiver, QEvent * e) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/widgets/kernel/qapplication.cpp:3378)
Application::notify(Application * const this, QObject * object, QEvent * event) (/home/dale/git/vircadia/vircadia-master/interface/src/Application.cpp:4280)
libQt5Core.so.5!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/kernel/qcoreapplication.cpp:1064)
libQt5Core.so.5!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/kernel/qcoreapplication.cpp:1821)
libQt5Core.so.5!postEventSourceDispatch(GSource * s) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:277)
libglib-2.0.so.0!g_main_dispatch(GMainContext * context) (/usr/src/debug/glib2-2.70.1-1.fc35.x86_64/glib/gmain.c:3381)
libglib-2.0.so.0!g_main_context_dispatch(GMainContext * context) (/usr/src/debug/glib2-2.70.1-1.fc35.x86_64/glib/gmain.c:4099)
libglib-2.0.so.0!g_main_context_iterate.constprop.0(GMainContext * context, gboolean block, gboolean dispatch, GThread * self) (/usr/src/debug/glib2-2.70.1-1.fc35.x86_64/glib/gmain.c:4175)
libglib-2.0.so.0!g_main_context_iteration(GMainContext * context, gboolean may_block) (/usr/src/debug/glib2-2.70.1-1.fc35.x86_64/glib/gmain.c:4240)
libQt5Core.so.5!QEventDispatcherGlib::processEvents(QEventDispatcherGlib * const this, QEventLoop::ProcessEventsFlags flags) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:423)
libQt5Core.so.5!QEventLoop::exec(QEventLoop * const this, QEventLoop::ProcessEventsFlags flags) (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/global/qflags.h:69)
libQt5Core.so.5!QCoreApplication::exec() (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/corelib/global/qflags.h:121)
libQt5Gui.so.5!QGuiApplication::exec() (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/gui/kernel/qguiapplication.cpp:1860)
libQt5Widgets.so.5!QApplication::exec() (/usr/src/debug/qt5-qtbase-5.15.2-28.fc35.x86_64/src/widgets/kernel/qapplication.cpp:2824)
main(int argc, const char ** argv) (/home/dale/git/vircadia/vircadia-master/interface/src/main.cpp:448)
daleglass commented 2 years ago

Here's another:

Thread 121 "Thread (pooled)" received signal SIGSEGV, Segmentation fault.

#0  0x000000000075ca85 in __gnu_cxx::__exchange_and_add(int volatile*, int) (__val=-1, __mem=0xb) at /usr/include/c++/11/ext/atomicity.h:66
#1  __gnu_cxx::__exchange_and_add_dispatch(int*, int) (__val=-1, __mem=0xb) at /usr/include/c++/11/ext/atomicity.h:101
#2  std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (this=0x3) at /usr/include/c++/11/bits/shared_ptr_base.h:165
#3  0x00007ffff4dd7582 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() (this=0x3c9f9c08, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:705
#4  std::__shared_ptr<NetworkMaterial, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() (this=0x3c9f9c00, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr_base.h:1154
#5  std::shared_ptr<NetworkMaterial>::~shared_ptr() (this=0x3c9f9c00, __in_chrg=<optimized out>) at /usr/include/c++/11/bits/shared_ptr.h:122
#6  std::_Destroy<std::shared_ptr<NetworkMaterial> >(std::shared_ptr<NetworkMaterial>*) (__pointer=0x3c9f9c00) at /usr/include/c++/11/bits/stl_construct.h:140
#7  std::_Destroy_aux<false>::__destroy<std::shared_ptr<NetworkMaterial>*>(std::shared_ptr<NetworkMaterial>*, std::shared_ptr<NetworkMaterial>*) (__last=<optimized out>, __first=0x3c9f9c00) at /usr/include/c++/11/bits/stl_construct.h:152
#8  std::_Destroy<std::shared_ptr<NetworkMaterial>*>(std::shared_ptr<NetworkMaterial>*, std::shared_ptr<NetworkMaterial>*) (__last=<optimized out>, __first=<optimized out>) at /usr/include/c++/11/bits/stl_construct.h:185
#9  std::_Destroy<std::shared_ptr<NetworkMaterial>*, std::shared_ptr<NetworkMaterial> >(std::shared_ptr<NetworkMaterial>*, std::shared_ptr<NetworkMaterial>*, std::allocator<std::shared_ptr<NetworkMaterial> >&)
    (__last=<optimized out>, __first=<optimized out>) at /usr/include/c++/11/bits/alloc_traits.h:746
#10 std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > >::_M_erase_at_end(std::shared_ptr<NetworkMaterial>*) (__pos=0x3c9f9bf0, this=0x7ffdb41749a8) at /usr/include/c++/11/bits/stl_vector.h:1796
#11 std::vector<std::shared_ptr<NetworkMaterial>, std::allocator<std::shared_ptr<NetworkMaterial> > >::clear() (this=0x7ffdb41749a8) at /usr/include/c++/11/bits/stl_vector.h:1499
#12 GeometryResource::resetTextures() (this=this@entry=0x7ffdb41748a0) at /home/vadim/git/vircadia/vi
rcadia-master/libraries/model-networking/src/model-networking/ModelCache.cpp:365
#13 0x00007ffff4dd75b9 in GeometryResource::deleter() (this=0x7ffdb41748a0) at /home/vadim/git/vircadia/vircadia-master/libraries/model-networking/src/model-networking/ModelCache.cpp:352
#14 0x00007ffff4dd6afd in QtSharedPointer::ExternalRefCountData::destroy() (this=0x7ffdb4173040) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:149
#15 QSharedPointer<Resource>::deref(QtSharedPointer::ExternalRefCountData*) (dd=0x7ffdb4173040) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:458
#16 0x00007ffff4dd8970 in QSharedPointer<Resource>::deref(QtSharedPointer::ExternalRefCountData*) (dd=<optimized out>) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:454
#17 QSharedPointer<Resource>::deref() (this=0x7ffd21aa6130) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:453
#18 QSharedPointer<Resource>::~QSharedPointer() (this=0x7ffd21aa6130, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:310
#19 GeometryReader::run() (this=0x3d3384a0) at /home/vadim/git/vircadia/vircadia-master/libraries/model-networking/src/model-networking/ModelCache.cpp:186
#20 0x00007ffff410d5d0 in QThreadPoolThread::run() (this=0x7ffefc05f7f0) at thread/qthreadpool.cpp:100
#21 0x00007ffff410a4c6 in QThreadPrivate::start(void*) (arg=0x7ffefc05f7f0) at thread/qthread_unix.cpp:329
#22 0x00007fffe71feb17 in start_thread (arg=<optimized out>) at pthread_create.c:435
#23 0x00007fffe72836c0 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
stale[bot] commented 2 years ago

Hello! Is this still an issue?