overte-org / overte

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

glTF-related crashes and freezes on different locales #974

Closed ksuprynowicz closed 1 month ago

ksuprynowicz commented 1 month ago

To reproduce run Overte on Linux with LANG=de_DE.UTF-8

JulianGro commented 1 month ago

Not sure if this could be related, but there are GLTF related warnings when building:

/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp: In member function ‘void GLTFSerializer::setHFMMaterial(HFMMaterial&, const cgltf_material&)’:
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1349:83: warning: comparison of integer expressions of different signedness: ‘int’ and ‘cgltf_size’ {aka ‘long unsigned int’} [-Wsign-compare]
 1349 |                         if (object["index"].isDouble() && object["index"].toInt() < _data->textures_count) {
      |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1358:83: warning: comparison of integer expressions of different signedness: ‘int’ and ‘cgltf_size’ {aka ‘long unsigned int’} [-Wsign-compare]
 1358 |                         if (object["index"].isDouble() && object["index"].toInt() < _data->textures_count) {
      |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1373:83: warning: comparison of integer expressions of different signedness: ‘int’ and ‘cgltf_size’ {aka ‘long unsigned int’} [-Wsign-compare]
 1373 |                         if (object["index"].isDouble() && object["index"].toInt() < _data->textures_count) {
      |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1391:83: warning: comparison of integer expressions of different signedness: ‘int’ and ‘cgltf_size’ {aka ‘long unsigned int’} [-Wsign-compare]
 1391 |                         if (object["index"].isDouble() && object["index"].toInt() < _data->textures_count) {
      |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1420:83: warning: comparison of integer expressions of different signedness: ‘int’ and ‘cgltf_size’ {aka ‘long unsigned int’} [-Wsign-compare]
 1420 |                         if (object["index"].isDouble() && object["index"].toInt() < _data->textures_count) {
      |                                                           ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp: In instantiation of ‘bool findPointerInArray(const T*, const T*, size_t, int&) [with T = cgltf_node; size_t = long unsigned int]’:
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:191:36:   required from here
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:152:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
  152 |     for (int i = 0; i < arraySize; i++) {
      |                     ~~^~~~~~~~~~~
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp: In instantiation of ‘bool findPointerInArray(const T*, const T*, size_t, int&) [with T = cgltf_material; size_t = long unsigned int]’:
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:965:73:   required from here
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:152:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp: In instantiation of ‘bool findPointerInArray(const T*, const T*, size_t, int&) [with T = cgltf_image; size_t = long unsigned int]’:
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:1310:36:   required from here
/home/juliangro/git/overte/libraries/model-serializers/src/GLTFSerializer.cpp:152:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]