Regression: Geometry Nodes: Access Violation Exception when copying from Mesh with GPU Subdivision Surface Modifier #113377
Operating system: Windows 10 Pro
Graphics card: NVIDIA GeForce RTX 3060 Ti
Broken: version: 3.5.0 Alpha, branch: master, commit date: 2022-11-11 21:32, hash:
Worked: version: 3.5.0 Alpha, branch: master, commit date: 2022-11-10 21:29, hash:
Short description of error
I was fiddling around with steps to reproduce an earlier report issues/113358, but stumbled across another way to crash blender with an access violation (might be related, might not). Setting up a scene where a base object has a subdivision modifier from which another object then copies causes a crash when you try to edit both at once. Other generative modifiers don't seem to be affected.
Interestingly, this crash does not occur when both objects have mesh data with the same layout (i.e. both are cubes/spheres/monkeys as created by the add mesh operator)
Steps to Crash
1.Open the file CopyDataCrash.blend.
Outline.001 (the order doesn't seem to matter).
3. Try tabbing into edit mode.
4. at this point, blender should have crashed with an
EXCEPTION_ACCESS_VIOLATION (Report CopyDataCrash.crash.txt attached).
The other cube+outline objects are included to show that only the subdivision surface modifier seems to be affected. Using the same steps on those groups does not produce a crash.
Any one of these will prevent a crash:
- Disabling Edit Mode Display of either the Subdivision Surface Modifier on
Cube.001or the Geometry Nodes on
- Applying either modifier.
- Adding a cube mesh to
Outline.001in edit mode (such that both
Outline.001have the same amount/layout of faces).
I really don't know who is causer, there are too many potential causes:
On the one hand, all this seems indirectly related, but at the same time i won’t say that anyone is definitely guilty, since it’s clearly not directly related.
88c956c13b should only impacts rendering, not viewport drawing. Has anyone been able to reproduce the issue? We could revert this commit and see if it still fails.
I agree that the other mentioned commits aren't directly related.
Up to date call stack. (Blender 4.1)
__pthread_kill_implementation (@pthread_kill@@GLIBC_2.34:81) __pthread_kill_internal (@pthread_kill@@GLIBC_2.34:59) __GI___pthread_kill (@pthread_kill@@GLIBC_2.34:59) __GI_raise (@raise:10) __GI_abort (@abort:46) _BLI_assert_abort (/home/jeroen/blender-git/blender/source/blender/blenlib/intern/BLI_assert.c:48) BM_face_at_index (/home/jeroen/blender-git/blender/source/blender/bmesh/intern/bmesh_mesh.h:120) bm_original_face_get (/home/jeroen/blender-git/blender/source/blender/draw/intern/mesh_extractors/extract_mesh.hh:190) ::draw_subdiv_cache_extra_coarse_face_data_mapped(Mesh *, BMesh *, MeshRenderData &, uint32_t *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache_impl_subdivision.cc:782) ::draw_subdiv_cache_update_extra_coarse_face_data(DRWSubdivCache &, Mesh *, MeshRenderData &) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache_impl_subdivision.cc:815) ::draw_subdiv_create_requested_buffers(Object *, Mesh *, MeshBatchCache &, MeshBufferCache &, const bool, const bool, const bool, const float (*), const bool, const bool, const bool, const ToolSettings *, const bool, OpenSubdiv_EvaluatorCache *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache_impl_subdivision.cc:2173) ::DRW_create_subdivision(Object *, Mesh *, MeshBatchCache &, MeshBufferCache *, const bool, const bool, const bool, const float (*), const bool, const bool, const bool, const ToolSettings *, const bool) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache_impl_subdivision.cc:2325) DRW_mesh_batch_cache_create_requested(TaskGraph*, Object*, Mesh*, Scene const*, bool, bool) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache_impl_mesh.cc:1900) ::drw_batch_cache_generate_requested(Object *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_cache.cc:3358) ::drw_engines_cache_populate(Object *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_c.cc:1089) ::DRW_draw_render_loop_ex(Depsgraph *, RenderEngineType *, ARegion *, View3D *, GPUViewport *, const bContext *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_c.cc:1728) ::DRW_draw_view(const bContext *) (/home/jeroen/blender-git/blender/source/blender/draw/intern/draw_manager_c.cc:1632) ::view3d_draw_view(const bContext *, ARegion *) (/home/jeroen/blender-git/blender/source/blender/editors/space_view3d/view3d_draw.cc:1595) ::view3d_main_region_draw(const bContext *, ARegion *) (/home/jeroen/blender-git/blender/source/blender/editors/space_view3d/view3d_draw.cc:1629) ED_region_do_draw(bContext*, ARegion*) (/home/jeroen/blender-git/blender/source/blender/editors/screen/area.cc:532)
It seems like inconsistency in the data model.
I will assign it to EEVEE/Viewport module as the crash occurs there.
When switching to edit mode it seems like one bmesh instance doesn't match the mesh it represents. Its faces, edges and vertices are empty. Which crashes blender. So it might be that the input data isn't complete.
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?