View Issue Details

IDProjectCategoryView StatusLast Update
0002204PartBugpublic2022-01-24 19:16
Reporterbiogeo Assigned Towmayer  
Status resolvedResolutionfixed 
OSLinux MintOS Version13 Maya 
Product Version0.15 
Target Version0.20Fixed in Version0.20 
Summary0002204: Crash when unioning toruses (upstream OCC bug)
DescriptionWhen using the part workbench to union two toruses, in certain situations FreeCAD will appear to enter an infinite loop, during which it gradually consumes more and more RAM until the system slows to a crawl and the only solution is to kill the process.

I have found this to occur under the following conditions:
1. For both toruses, Radius1 == Radius2, and they are also equal between the two toruses.
2. For both toruses, Angle3 == 90 degrees, i.e., they are both a "quarter donut".
3. The two toruses are positioned to share a circular face.

Depending on the relative angle between the planes in which the toruses lie, the union operation will sometimes work correctly, sometimes "succeed" but produce an unexpected result (e.g., only three circular faces with no torus components), and sometimes produce the infinite loop condition described above.
Steps To Reproduce1. Open a new file and go to the Part workbench
2. Create a torus "Torus" with Radius1=2mm, Radius2=2mm, Angle3=90
3. Create a second torus "Torus001" with Radius1=2mm, Radius2=2mm, Angle3=90
4. Rotate Torus001 90 degrees about the z-axis. The two together should look like a single torus with Angle3=180.
5. Select Torus and Torus001 and use the Union tool.

FreeCAD enters an infinite loop gradually allocating more and more RAM until the system slows to a crawl and the process must be killed.

The attached file is the result of steps 1-4. Opening this file in a new FreeCAD session and running Union on the two toruses reliably crashes FreeCAD on my system.
Tags#pending, #ready-for-migration, OCC Bug, OCC NotOnRoadmap, upstream
FreeCAD Information



2015-07-30 20:16


Torus-union-test.fcstd (Attachment missing)


2015-07-30 20:25

reporter   ~0006264

Forgot to include as additional information:

OS: Linux Mint 13 Maya
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.15.4671 (Git)
Branch: releases/FreeCAD-0-15
Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
Python version: 2.7.3
Qt version: 4.8.1
Coin version: 3.1.3
OCC version: 6.8.0.oce-0.17


2016-02-28 18:32

administrator   ~0006855

That's clearly an OpenCascade bug which we are not able to fix.


2016-03-01 15:17

manager   ~0006871

It eventually crashes FreeCAD here, with the OCE from tanderson, OCE patches over OCC 6.9.1

OS: Ubuntu 12.04.5 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6523 (Git)
Build type: Release
Branch: master
Hash: ecd6517cb00fcf05edd41a38b3ce1fa8b16ec3ad
Python version: 2.7.3
Qt version: 4.8.2
Coin version: 3.1.3
OCC version: 6.9.1.oce-0.18-dev


2017-01-13 17:12

administrator   ~0007722

Does this issue persist in OCC 7.x ?
If so Is there an open upstream bug we can link to?


2017-06-10 19:54

administrator   ~0009337

@biogeo can you re-up the attachment? We restored recently from a backup after an issue we had with th tracker and some attachments like yours didn't make it.


2017-08-21 11:01

administrator   ~0009974

@jmaustpc do you mind testing this with OCC7.1 ?


2017-09-02 10:43

administrator   ~0010057

Attached is a file that shows the behaviour with occ6.8 where the applications eats all memory.
With occ7.2 it now returns immediately but the shape is invalid. On the other hand in practise such a shape doesn't make too much sense anyway.
Torus-union.fcstd (11,597 bytes)


2018-05-30 16:05

administrator   ~0011307

Needs to be tested with OCC7.3


2019-02-27 21:57

administrator   ~0012796

@wmayer can you reproduce in OCC7.3


2019-02-28 10:22

administrator   ~0012802

Yes, the behaviour with OCC7.3 is the same as with 7.2


2021-12-12 14:44

administrator   ~0016077

With OCC7.4 and 7.5 still invalid shapes are created but with 7.6 finally a correct shape is built.


2021-12-12 14:45

administrator   ~0016078

Needs to be built with OCC 7.6


2022-03-03 13:55

administrator   ~0016467

This ticket has been migrated to GitHub as issue 5632.

Issue History

Date Modified Username Field Change
2015-07-30 20:16 biogeo New Issue
2015-07-30 20:16 biogeo File Added: Torus-union-test.fcstd
2015-07-30 20:25 biogeo Note Added: 0006264
2016-02-28 18:32 wmayer Note Added: 0006855
2016-02-28 18:32 wmayer Status new => confirmed
2016-03-01 15:17 jmaustpc Note Added: 0006871
2017-01-13 17:09 Kunda1 Tag Attached: OCC Bug
2017-01-13 17:09 Kunda1 Tag Attached: upstream
2017-01-13 17:12 Kunda1 Note Added: 0007722
2017-06-10 19:54 Kunda1 Note Added: 0009337
2017-08-21 10:53 Kunda1 Tag Attached: OCC 7.2
2017-08-21 11:01 Kunda1 Note Added: 0009974
2017-09-02 10:43 wmayer File Added: Torus-union.fcstd
2017-09-02 10:43 wmayer Note Added: 0010057
2017-10-18 11:21 wmayer Project FreeCAD => Part
2018-05-30 16:05 Kunda1 Tag Detached: OCC 7.2
2018-05-30 16:05 Kunda1 Tag Attached: OCC 7.3
2018-05-30 16:05 Kunda1 Note Added: 0011307
2018-10-14 11:23 Kunda1 Tag Attached: OCC NotOnRoadmap
2018-10-14 11:23 Kunda1 Tag Detached: OCC 7.3
2019-02-27 21:51 Kunda1 Tag Attached: #pending
2019-02-27 21:57 Kunda1 Note Added: 0012796
2019-02-28 10:22 wmayer Note Added: 0012802
2019-02-28 16:48 Kunda1 Summary Crash when unioning toruses => Crash when unioning toruses (upstream OCC bug)
2021-02-06 06:46 abdullah Target Version => 0.20
2021-12-12 14:44 wmayer Note Added: 0016077
2021-12-12 14:45 wmayer Assigned To => wmayer
2021-12-12 14:45 wmayer Status confirmed => resolved
2021-12-12 14:45 wmayer Resolution open => fixed
2021-12-12 14:45 wmayer Fixed in Version => 0.20
2021-12-12 14:45 wmayer Note Added: 0016078
2022-01-24 19:16 Kunda1 Tag Attached: #ready-for-migration