overte-org / overte

Overte open source virtual worlds platform.
https://overte.org/
Other
130 stars 47 forks source link

MultiSphereShape related crash on specific avatar #875

Open JulianGro opened 3 months ago

JulianGro commented 3 months ago

If it doesn't crash, it displays the following message.

[03/16 18:12:25] [DEBUG] [default] MultiSphereShape::computeSpheres in mode ExtractionMode::SphereCollapse generated sphere with zero radius

When it does crash, this shows up in the backtrace:

#0 btCompoundShape::addChildShape() at /home/juliangro/overte-files/vcpkg/3e9e2477/buildtrees/bullet3/src/392524cc77-dc9ca24e83.clean/src/BulletCollision/CollisionShapes/btCompoundShape.cpp:60
#1 ShapeFactory::createShapeFromInfo() at /home/juliangro/git/overte/libraries/physics/src/ShapeFactory.cpp:419
#2 ShapeManager::getShape() at /home/juliangro/git/overte/libraries/physics/src/ShapeManager.cpp:76
#3 PhysicalEntitySimulation::buildMotionStatesForEntitiesThatNeedThem() at /home/juliangro/git/overte/libraries/physics/src/PhysicalEntitySimulation.cpp:375
#4 PhysicalEntitySimulation::buildPhysicsTransaction() at /home/juliangro/git/overte/libraries/physics/src/PhysicalEntitySimulation.cpp:414
#5 Application::update() at /usr/include/c++/13/bits/shared_ptr_base.h:1.665
#6 Application::idle() at /home/juliangro/git/overte/interface/src/Application.cpp:5.393
#7 Application::event() at /home/juliangro/git/overte/interface/src/Application.cpp:4.328
#8 QApplicationPrivate::notify_helper() at src/widgets/kernel/qapplication.cpp:3.640
#9 QCoreApplication::notifyInternal2() at src/corelib/kernel/qcoreapplication.cpp:1.064
#10 QCoreApplication::sendEvent() at src/corelib/kernel/qcoreapplication.cpp:1.462
#11 QCoreApplicationPrivate::sendPostedEvents() at src/corelib/kernel/qcoreapplication.cpp:1.821
#12 QCoreApplication::sendPostedEvents() at src/corelib/kernel/qcoreapplication.cpp:1.680
#13 postEventSourceDispatch() at src/corelib/kernel/qeventdispatcher_glib.cpp:277
#14 g_main_dispatch() at glib/gmain.c:3.476
#15 g_main_context_dispatch_unlocked() at glib/gmain.c:4.284
#16 g_main_context_iterate_unlocked() at glib/gmain.c:4.349
#17 g_main_context_iteration() at glib/gmain.c:4.414
#18 QEventDispatcherGlib::processEvents() at src/corelib/kernel/qeventdispatcher_glib.cpp:423
#19 QEventLoop::exec() at src/corelib/global/qflags.h:69
#20 QCoreApplication::exec() at src/corelib/global/qflags.h:121

This happens on newest master after upgrading the glTF serializer.

AnotherFoxGuy commented 3 months ago

In debug mode, it triggers an assert in bullet somewhere I will try to get a backtrace of it

JulianGro commented 3 months ago

Probably has nothing to do with this, but there is a warning about "Spherical Harmonics" on latest master (has been around for a while though):

/__w/overte/overte/libraries/octree/src/OctreePacketData.cpp: In static member function 'static int OctreePacketData::unpackDataFromBytes(const unsigned char*, AACube&)':
/__w/overte/overte/libraries/octree/src/OctreePacketData.cpp:816:48: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'struct aaCubeData' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  816 |     memcpy(&cube, dataBytes, sizeof(aaCubeData));
      |                                                ^
/__w/overte/overte/libraries/octree/src/OctreePacketData.cpp:29:8: note: 'struct aaCubeData' declared here
   29 | struct aaCubeData {
      |        ^~~~~~~~~~
/__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp: In member function 'bool GPUKTXPayload::unserialize(const Byte*, size_t)':
/__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:77:58: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gpu::Sampler::Desc' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
   77 |         memcpy(&_samplerDesc, data, sizeof(Sampler::Desc));
      |                                                          ^
In file included from /__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:13:
/__w/overte/overte/libraries/gpu/src/gpu/Texture.h:128:11: note: 'class gpu::Sampler::Desc' declared here
  128 |     class Desc {
      |           ^~~~
/__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:91:60: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'glm::ivec2' {aka 'struct glm::vec<2, int, glm::packed_highp>'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
   91 |             memcpy(&_originalSize, data, sizeof(glm::ivec2));
      |                                                            ^
In file included from /github/home/overte-files/vcpkg/899fda26-release/installed/x64-linux-release/include/glm/ext/vector_bool2.hpp:5,
                 from /github/home/overte-files/vcpkg/899fda26-release/installed/x64-linux-release/include/glm/vec2.hpp:5,
                 from /github/home/overte-files/vcpkg/899fda26-release/installed/x64-linux-release/include/glm/glm.hpp:116,
                 from /__w/overte/overte/libraries/shared/src/RegisteredMetaTypes.h:20,
                 from /__w/overte/overte/libraries/gpu/src/gpu/Texture.h:23,
                 from /__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:13:
/github/home/overte-files/vcpkg/899fda26-release/installed/x64-linux-release/include/glm/detail/type_vec2.hpp:17:9: note: 'glm::ivec2' {aka 'struct glm::vec<2, int, glm::packed_highp>'} declared here
   17 |  struct vec<2, T, Q>
      |         ^~~~~~~~~~~~
/__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp: In member function 'bool IrradianceKTXPayload::unserialize(const Byte*, size_t)':
/__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:147:64: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class gpu::SphericalHarmonics' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  147 |         memcpy(&_irradianceSH, data, sizeof(SphericalHarmonics));
      |                                                                ^
In file included from /__w/overte/overte/libraries/gpu/src/gpu/Texture_ktx.cpp:13:
/__w/overte/overte/libraries/gpu/src/gpu/Texture.h:59:7: note: 'class gpu::SphericalHarmonics' declared here
   59 | class SphericalHarmonics {
      |       ^~~~~~~~~~~~~~~~~~
HifiExperiments commented 3 months ago

spherical harmonics refer to how ambient maps work, they're extra data that we store in ktx textures to speed up processing