Carve Boolean solver crash when joining meshes
Closed, ResolvedPublic

Description

System Information
Ubuntu Linux 16.04.3
GeForce GTX 980 Ti
Nvidia driver version 384.90

Blender Version
Broken: # Blender 2.79 (sub 0), Commit date: 2017-09-11 10:43, Hash 5bd8ac9abfa

Short description of error
Joining a mesh to an existing mesh that is used as a boolean modifier causes a crash

Exact steps for others to reproduce the error
open the attached blender file. 2 meshes are selected. type ctrl-j to join them.
Sometimes it crashes immediately, sometimes I have to hit Tab twice, then it crashes.

When this initially happened, the crash.txt file contained the message:
CSG failed, exception /home/sources/blender-release/extern/carve/lib/intersect_face_division.cpp:578 "implement me"

but when I was able to reproduce it, that message was no longer in the crash.txt. I mention it just in case it provides a clue.

Details

Type
Bug

Vuk Gardašević (lijenstina) renamed this task from CSG failed, exception /home/sources/blender-release/extern/carve/lib/intersect_face_division.cpp:578 "implement me" to Carve Boolean solver crash when joining meshes.Nov 3 2017, 5:51 PM
mathieu menuet (bliblubli) triaged this task as Confirmed priority.EditedNov 3 2017, 6:52 PM

I had to hit tab a lot (spam it more than 10 times) after joining and got a crash indeed on win7 using latest master.

triangulator gives us a tri with two identical idxs (337,336,337) which asserts here

1   raise                                                       0x7fffeff3566b 
2   abort                                                       0x7fffeff37381 
3   __assert_fail_base                                          0x7fffeff2d8fa 
4   __assert_fail                                               0x7fffeff2d972 
5   (anonymous namespace)::pushTriangle carve-util.cc      735  0x64d0c3d      
6   carve_triangulatePoly               carve-util.cc      772  0x64d0d53      
7   carve_addMesh                       carve-capi.cc      654  0x64974ee      
8   carve_mesh_from_dm                  MOD_boolean_util.c 701  0x260c1af      
9   NewBooleanDerivedMesh               MOD_boolean_util.c 760  0x260c3e5      
10  applyModifier_carve                 MOD_boolean.c      408  0x25ce412      
11  applyModifier                       MOD_boolean.c      455  0x25ce4c5      
12  modwrap_applyModifier               modifier.c         770  0x2b5f23b      
13  mesh_calc_modifiers                 DerivedMesh.c      2082 0x29f637a      
14  mesh_build_data                     DerivedMesh.c      2653 0x29f84b9      
15  makeDerivedMesh                     DerivedMesh.c      2750 0x29f8884      
16  BKE_object_handle_data_update       object_update.c    189  0x2b94dcb      
17  BKE_object_handle_update_ex         object.c           2659 0x2b8b284      
18  scene_update_object_func            scene.c            1586 0x2be81f4      
19  task_scheduler_thread_run           task.c             441  0x2f49c0f      
20  start_thread                                                0x7ffff04ec61b 
... <More>

I noticed @Sergey Sharybin (sergey) fixed some stuff here already in rB34c7fd1a1120aee8e367, so could you have a look?

Sergey Sharybin (sergey) closed this task as Resolved.Feb 8 2018, 3:48 PM

The issue was caused by some precision issue inside Carve itself.

Since we've got BMesh solver which is much easier for us to maintain, we've removed Carve solver now. So this bug should no longer happen!