Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash on "Create Convex Collision Sibling" of cylinder mesh #17569

Closed
romlok opened this issue Mar 16, 2018 · 4 comments · Fixed by #21202
Closed

Crash on "Create Convex Collision Sibling" of cylinder mesh #17569

romlok opened this issue Mar 16, 2018 · 4 comments · Fixed by #21202

Comments

@romlok
Copy link
Contributor

romlok commented Mar 16, 2018

Godot version:
3.0.2 (Steam)

OS/device including version:
Linux x64; X11; Debian Testing

Issue description:
Godot crashes when one tries to "create convex collision sibling" for cylinder meshes of certain sizes. For example; height 1, top and bottom radii 0.9.

ERROR: build: Condition ' !F ' is true. Continuing..:
   At: core/math/quick_hull.cpp:399.
ERROR: build: Condition ' O == __null ' is true. Continuing..:
   At: core/math/quick_hull.cpp:403.
ERROR: build: Condition ' !F2 ' is true. Continuing..:
   At: core/math/quick_hull.cpp:430.

(lots of the above three lines are output)

ERROR: operator[]: FATAL: Index p_index=2 out of size (size()=0)
   At: core/vector.h:138.
handle_crash: Program crashed with signal 4
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x34f00) [0x7f08b71a8f00] (??:0)
[2] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x495dd7] (??:?)
[3] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x1b20b1f] (??:?)
[4] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0xad4f94] (??:?)
[5] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x10da715] (??:?)
[6] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0xdc8259] (<artificial>:?)
[7] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x4f2758] (??:?)
[8] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x1a2ebe9] (??:?)
[9] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x1b6d5ca] (??:?)
[10] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x178c2ff] (??:?)
[11] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0xfa6af6] (??:?)
[12] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x4c589f] (??:?)
[13] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x45412d] (??:?)
[14] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f08b7195a87] (??:0)
[15] /data/games/Steam/SteamApps/common/Godot Engine/godot.x11.opt.tools.64() [0x46061f] (??:?)
-- END OF BACKTRACE --

Steps to reproduce:

  1. Create a new scene
  2. Add a RigidBody as the root node
  3. Add a MeshInstance child of the root
  4. Set the MeshInstance's mesh to a "New CylinderMesh"
  5. Modify the CylinderMesh to have: Top Radius 0.9; Bottom Radius 0.9; Height 1
  6. Select the MeshInstance in the scene tree
  7. Click the "Mesh" menu above the 3D view
  8. Select "Create Convex Collision Sibling"
@ghost ghost added this to the 3.1 milestone Mar 16, 2018
@YannBurrett
Copy link

I'm getting this with both siblings and static body mesh creation options. It'll show the error messages on creation, allow me to open the project two or so more times, and then crash every time I try and open the project.

This is on Windows 10, Godot 3.02 (Steam)

`ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' !F ' is true. Continuing..:
At: core\math\quick_hull.cpp:399
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
At: core\math\quick_hull.cpp:430
CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] <couldn't map PC to fn name>
[1] <couldn't map PC to fn name>
[2] <couldn't map PC to fn name>
[3] <couldn't map PC to fn name>
[4] <couldn't map PC to fn name>
[5] <couldn't map PC to fn name>
[6] <couldn't map PC to fn name>
[7] <couldn't map PC to fn name>
[8] <couldn't map PC to fn name>
[9] <couldn't map PC to fn name>
[10] <couldn't map PC to fn name>
[11] <couldn't map PC to fn name>
[12] <couldn't map PC to fn name>
[13] <couldn't map PC to fn name>
[14] <couldn't map PC to fn name>
[15] <couldn't map PC to fn name>
[16] <couldn't map PC to fn name>
[17] BaseThreadInitThunk
-- END OF BACKTRACE --

`

@kiiada
Copy link

kiiada commented May 2, 2018

I'm getting this error on two objects in my scene. Both cause crashes

With a custom model:

ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430

With a cylinder:

ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' !F ' is true. Continuing..:
   At: core\math\quick_hull.cpp:399
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430

The cylinder is very interesting to me as it let me build the whole convex static body and it is applied correctly in my main scene. When I try to open the cylinder scene itself though, the errors are printed and Godot crashes

@akien-mga
Copy link
Member

Seems related to #16560, I guess the crash is the same, the way to reproduce potentially different.

@PelegMedia
Copy link

Also happening to me, while trying to create a GridMap library.
I am adding spatial as a root and several meshinstances. I creating Convex Static Body it crashes.
It also crashes arbitrary while loading such scenes with several meshes with Convex Static Body.
Even if there is no crash I still see the errors.

Here is the debug log:

OpenGL ES 3.0 Renderer: GeForce GT 730/PCIe/SSE2
OPENING: e:/work/games/godot/BetweenWorlds (e:::work::games::godot::BetweenWorld
s)
running cmdline: "E:\programs\Godot3\Godot_v3.0.2-stable_win64.exe" "--path" "e:
/work/games/godot/BetweenWorlds" "--editor"
OpenGL ES 3.0 Renderer: GeForce GT 730/PCIe/SSE2
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' O == 0 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:403
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: RasterizerStorageGLES3::mesh_surface_get_index_array: Condition ' surface
->index_array_len == 0 ' is true. returned: PoolVector<uint8_t>()
   At: drivers\gles3\rasterizer_storage_gles3.cpp:3265
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' O == E ' is true. Continuing..:
   At: core\math\quick_hull.cpp:402
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: QuickHull::build: Condition ' !F2 ' is true. Continuing..:
   At: core\math\quick_hull.cpp:430
ERROR: Vector<struct Geometry::MeshData::Face>::operator []: FATAL: Index p_inde
x=24 out of size (size()=24)
   At: c:\projects\godot-builds\godot\core\vector.h:138
CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://git
hub.com/godotengine/godot/issues
[0] <couldn't map PC to fn name>
[1] <couldn't map PC to fn name>
[2] <couldn't map PC to fn name>
[3] <couldn't map PC to fn name>
[4] <couldn't map PC to fn name>
[5] <couldn't map PC to fn name>
[6] <couldn't map PC to fn name>
[7] <couldn't map PC to fn name>
[8] <couldn't map PC to fn name>
[9] <couldn't map PC to fn name>
[10] <couldn't map PC to fn name>
[11] <couldn't map PC to fn name>
[12] <couldn't map PC to fn name>
[13] <couldn't map PC to fn name>
[14] <couldn't map PC to fn name>
[15] <couldn't map PC to fn name>
[16] BaseThreadInitThunk
-- END OF BACKTRACE --

hpvb added a commit to hpvb/godot that referenced this issue Aug 19, 2018
We delete the faces for consideration in this loop but we can still
sometimes find an edge that connects to this face. We now interate over
all edges and disconnect edges connecting to this face.

This fixes godotengine#16560 and fixes godotengine#17569
dragmz pushed a commit to dragmz/godot that referenced this issue Aug 20, 2018
We delete the faces for consideration in this loop but we can still
sometimes find an edge that connects to this face. We now interate over
all edges and disconnect edges connecting to this face.

This fixes godotengine#16560 and fixes godotengine#17569
akien-mga pushed a commit to akien-mga/godot that referenced this issue Jul 3, 2019
We delete the faces for consideration in this loop but we can still
sometimes find an edge that connects to this face. We now interate over
all edges and disconnect edges connecting to this face.

This fixes godotengine#16560 and fixes godotengine#17569

(cherry picked from commit 33669a8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants