View Issue Details

IDProjectCategoryView StatusLast Update
0023436CommunityOCCT:Modeling Algorithmspublic2013-04-29 15:23
Reportermartinsiggel Assigned Tojgv 
PrioritynormalSeveritycrash 
Status closedResolutionfixed 
PlatformAOSL 
Product Version6.5.3 
Target Version6.6.0Fixed in Version6.6.0 
Summary0023436: BRepOffsetAPI_ThruSections crashes when lofting through identical profiles
DescriptionBRepOffsetAPI_ThruSections::build crashes, when trying to loft through 3 similar profiles. An exception StandardConstructionError is thrown from Geom_BSplineSurface::InsertUKnots.

The profiles are circles or ellipses, generated with GeomAPI_Interpolate through a set of points. All 3 profiles are the identical, but shifted in z-Direction. Strangely, the crash only occurs for a specific number of points per circle. For this minimal example, these numbers are 7,13,14,19,22 ... Also, the crash only occurs, if ruled = false (No ruled surface).

Please see attached the source code for the example, the generated brep file with the profiles and a core dump + the executable.

Here, the short version of the code:

int numPoints =14;

TopoDS_Wire w1 = makeWire(makeEllipse(1.,1.,0.,numPoints, 0., false, true));
TopoDS_Wire w2 = makeWire(makeEllipse(1.,1.,3.,numPoints, 0., false, true));
TopoDS_Wire w3 = makeWire(makeEllipse(1.,1.,6.,numPoints, 0., false, true));

BRepOffsetAPI_ThruSections generator(Standard_True, Standard_False, Precision::Confusion());
generator.AddWire(w1);
generator.AddWire(w2);
generator.AddWire(w3);

generator.CheckCompatibility(Standard_False);

// this triggers the crash
generator.Build();

Please see the attached code for makeEllipse and makeWire.

Interestingly, the code doesn't crash, if one circle is slightly changed, i.e. if we set one ellipse axis parameter to e.g. 1.1.

This bug is probably similar to 0022981.
Steps To ReproducePlease download the attached example.
To reproduce the issue the attached shapes (myloft.brep) can be used.
restore myloft.brep s
explo s
## s_1 s_2 s_3 - sections;
thrusections r 0 0 s_1 s_2 s_3
==> Exception at Geom_BSplineSurface::InsertUKnots
At the same time if requested ruled surface (thrusections r 0 1 ...) or
use only two any sections like:
thrusections r 0 0 s_1 s_2
thrusections r 0 0 s_1 s_3
thrusections r 0 0 s_2 s_3

the problem is not reproducible (no exception).

TagsNo tags attached.
Test case numberbugs modalg(006) bug23436

Attached Files

  • OCC-LoftTest.tar.gz (784,561 bytes)
  • myloft.brep (3,851 bytes)

Relationships

related to 0022981 closedapn BRepOffsetAPI_ThruSections fails to build a surface from closed wires 

Activities

martinsiggel

2012-09-17 19:25

developer  

OCC-LoftTest.tar.gz (784,561 bytes)

szy

2012-10-31 15:39

manager  

myloft.brep (3,851 bytes)

szy

2012-10-31 15:44

manager   ~0022033

Attached sections (myloft.brep)to be used to reproduce the issue.
The algorithm raises exception:
An exception was caught 00977860 : Standard_ConstructionError: Geom_BSplineSurface::InsertUKnots
** Exception ** 00977860 : Standard_ConstructionError: Geom_BSplineSurface::InsertUKnots

That is similar to the case 22981.

jgv

2013-01-31 11:02

developer   ~0023216

The branch CR23436 is ready for reviewing.

pkv

2013-01-31 12:27

developer   ~0023217

reviewed

mkv

2013-02-01 15:37

tester   ~0023236

Dear BugMaster,

Branch CR23436 (and products from GIT master) was compiled on Linux and Windows platforms and tested.

Number of compiler warnings:

occt component :
Linux: 3 (3 on master)
Windows: 57 (57 on master)

products component :
Linux: 9 (9 on master)
Windows: 50 (50 on master)

Regressions:
No regressions

Improvements:
No improvements

Testing cases:
bugs modalg(006) bug23436 - OK

Testing on Linux:
Total MEMORY difference: 234605272 / 234072044
Total CPU difference: 10526.44000000021 / 9836.770000000413


Testing on Windows:
Total MEMORY difference: 331568696 / 330854964
Total CPU difference: 12352.046875 / 12467.984375

There are not serious differences in images found by testdiff.

Related Changesets

occt: master aadab519

2013-02-01 13:22:26

jgv

Details Diff
0023436: BRepOffsetAPI_ThruSections crashes when lofting through identical profiles
Adding of test case
Affected Issues
0023436
mod - src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx Diff File
add - tests/bugs/modalg/bug23436 Diff File

Issue History

Date Modified Username Field Change
2012-09-17 19:25 martinsiggel New Issue
2012-09-17 19:25 martinsiggel Assigned To => jgv
2012-09-17 19:25 martinsiggel File Added: OCC-LoftTest.tar.gz
2012-10-31 15:39 szy File Added: myloft.brep
2012-10-31 15:44 szy Note Added: 0022033
2012-10-31 15:50 szy Steps to Reproduce Updated
2012-10-31 16:03 szy Status new => assigned
2013-01-31 11:02 jgv Note Added: 0023216
2013-01-31 11:02 jgv Status assigned => resolved
2013-01-31 11:02 jgv Assigned To jgv => pkv
2013-01-31 12:27 pkv Status resolved => reviewed
2013-01-31 12:27 pkv Note Added: 0023217
2013-01-31 12:28 pkv Assigned To pkv => mkv
2013-02-01 15:37 mkv Note Added: 0023236
2013-02-01 15:37 mkv Test case number => bugs modalg(006) bug23436
2013-02-01 15:37 mkv Assigned To mkv => bugmaster
2013-02-01 15:37 mkv Status reviewed => tested
2013-02-04 14:47 jgv Changeset attached => occt master aadab519
2013-02-04 14:47 jgv Assigned To bugmaster => jgv
2013-02-04 14:47 jgv Status tested => verified
2013-02-04 14:47 jgv Resolution open => fixed
2013-02-20 10:19 bugmaster Target Version => 6.6.0
2013-02-28 15:16 abv Relationship added related to 0022981
2013-04-23 13:35 aiv Status verified => closed
2013-04-29 15:23 aiv Fixed in Version => 6.6.0