Editor crashes when generating ArrayMesh
Created by: Toshiwoz
Godot version:
Godot 3.1 custom build with hash 9eb4b6d
OS/device including version: Windows 10 (64 bits) AMD Radeon R5 M330
Issue description: I have a scene with a script that works with arraymesh when it ends generating the array I get this crash dump: ERROR: CowData::get: FATAL: Index p_index=0 out of size (size()=0) At: C:\Users\Home\Documents\TRABAJO-LEO\Godot Game Engine\godot\core/cowdata.h:149 CrashHandlerException: Program crashed Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues [0] CowData::get (c:\users\home\documents\trabajo-leo\godot game engine\godot\core\cowdata.h:149) [1] Vector::operator[] (c:\users\home\documents\trabajo-leo\godot game engine\godot\core\vector.h:89) [2] RasterizerSceneGLES3::_fill_render_list (c:\users\home\documents\trabajo-leo\godot game engine\godot\drivers\gles3\rasterizer_scene_gles3.cpp:3155) [3] RasterizerSceneGLES3::render_scene (c:\users\home\documents\trabajo-leo\godot game engine\godot\drivers\gles3\rasterizer_scene_gles3.cpp:4131) [4] VisualServerScene::_render_scene (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_scene.cpp:2140) [5] VisualServerScene::render_camera (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_scene.cpp:1714) [6] VisualServerViewport::_draw_viewport (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_viewport.cpp:70) [7] VisualServerViewport::draw_viewports (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_viewport.cpp:308) [8] VisualServerRaster::draw (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_raster.cpp:107) [9] VisualServerWrapMT::draw (c:\users\home\documents\trabajo-leo\godot game engine\godot\servers\visual\visual_server_wrap_mt.cpp:104) [10] Main::iteration (c:\users\home\documents\trabajo-leo\godot game engine\godot\main\main.cpp:1867) [11] OS_Windows::run (c:\users\home\documents\trabajo-leo\godot game engine\godot\platform\windows\os_windows.cpp:2736) [12] widechar_main (c:\users\home\documents\trabajo-leo\godot game engine\godot\platform\windows\godot_win.cpp:150) [13] _main (c:\users\home\documents\trabajo-leo\godot game engine\godot\platform\windows\godot_win.cpp:172) [14] main (c:\users\home\documents\trabajo-leo\godot game engine\godot\platform\windows\godot_win.cpp:184) [15] __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:288) [16] BaseThreadInitThunk -- END OF BACKTRACE --
Steps to reproduce:
- Open the only scene existing
- add the custom node I created "TerrainPrimitive"
- select noise texture
- select simplex noise
- you should see the editor crash with the same dump
Minimal reproduction project: GodotTerrainPrimitive.zip
I have looked for similar issues, and found the following (stack trace is similar): #21892 (closed)
I might be wrong but, to me it seems like the problem is here: drivers\gles3\rasterizer_scene_gles3.cpp:3155
This part of the code:
int ssize = mesh->surfaces.size();
for (int i = 0; i < ssize; i++) {
int mat_idx = inst->materials[i].is_valid() ? i : -1;
RasterizerStorageGLES3::Surface *s = mesh->surfaces[i];
_add_geometry(s, inst, NULL, mat_idx, p_depth_pass, p_shadow_pass);
}
It cycles through surfaces but it uses the index of the surface as the material index (but, is there always a material set into a mesh?), and as I place a material override then I managed to avoid the error.