overte
overte copied to clipboard
MultiSphereShape related crash on specific avatar
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.
In debug mode, it triggers an assert in bullet somewhere I will try to get a backtrace of it
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 {
| ^~~~~~~~~~~~~~~~~~
spherical harmonics refer to how ambient maps work, they're extra data that we store in ktx textures to speed up processing