View Issue Details

IDProjectCategoryView StatusLast Update
0024195Open CASCADEOCCT:Modeling Algorithmspublic2013-12-19 13:58
ReporterabvAssigned Toabv 
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version6.7.0 
Target Version6.7.0Fixed in Version6.7.0 
Summary0024195: Use of uninitialized data in IntCurve_IntPolyPolyGen.gxx
DescriptionDuring testing of several fixes for #14108, 0024168 several new unstable regressions appeared in functionality not affected by the changes being tested (data exchange and offsets). These regressions appeared in build #148 of master branch, and previously in testing fix for #24108 on my local machine.

Running under debugger revealed access to uninitialized field in IntCurve_IntPolyPolyGen::findIntersect(), introduced by fix for #23587 (included in OCCT 6.5.5): when isFullPolygon is True, in case when IntCurve_ExactIntersectionPoint does not find a solution (NbRoots() returns 0), that solution is requested and uninitialized values of U and V returned by the tool are used in calculations, leading to floating-point errors.

It is not clear how to treat this situation correctly:
- returning if NbRoots() is zero causes several regressionss (see 0024108:0025601 for the list)
- putting "continue" or using ParamOn1 and ParamOn2 instead of U and V seems to work well when built with VC11 64-bit mode but causes problem with infinite memory allocation in test de iges_1 L8 when built by VC9 in 32-bit mode

Perhaps the correct way to treat the situation should be to ensure that IntCurve_ExactIntersectionPoint never fails. To be investigated.
Steps To ReproduceDE test cases showing the problem in master run #148:

bugs iges bug23377
de step_1 E2 E9 K2 O1 R1 S2
de step_2 F7 I7
de step_4 A1
de step_5 A1

The characteristic point is exception reported by tpstat command in the log:
...
     1 F:SHELL_BASED_SURFACE_MODEL: Exeption is raised. Entity was not translated.

Offset test cases (fail with FLT_INVALID_OPERATION):

offset wire_closed_outside_0_075 G6 H2
TagsNo tags attached.
Test case numberNot needed

Activities

ifv

2013-09-25 14:27

developer   ~0025730

CR24195 is ready for rewieving and testing.
Branch contains modifications that are similar to modifications made by ABV for 24108, but problems with de iges_1 L8 and some other regressions are not reproduced.

ifv

2013-09-25 14:28

developer   ~0025731

Ok

mkv

2013-09-27 07:37

tester   ~0025758

Dear BugMaster,

Branch CR24195 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
SHA-1: e27d17cf76aa6cfcb87efeb9db6dd4eb35571dc8

Number of compiler warnings:

occt component :
Linux: 505 (506 on master)
Windows: 32 (31 on master)

New warning compilation on Windows platform:
IntCurve_IntPolyPolyGen.gxx:875, MSBuild, Priority: Normal
'aNbRoots' : local variable is initialized but not referenced

products component :
Linux: 191 (190 on master)
Windows: 287 (287 on master)

Regressions/differences:
http://occt-tests/CR24195-master-occt/Debian60-64/summary.html
http://occt-tests/CR24195-master-occt/Windows-32-VC9/summary.html
de iges_1(001) R8
de iges_2(002) I7

Testing cases:
Not needed

Testing on Linux:
Total MEMORY difference: 365990016 / 365791512
Total CPU difference: 53875.40000000022 / 42156.03000000098

Testing on Windows:
Total MEMORY difference: 428455932 / 428640164
Total CPU difference: 47005.625 / 47587.203125

There are not differences in images found by testdiff.

abv

2013-09-27 10:45

manager   ~0025767

In my understanding, the two reported differences are not regressions (the latter is rather improvement since checkshape error has disappeared).

gka

2013-09-27 12:54

developer   ~0025775

I agree that listed above test cases are not regressions.
Test cases:
de iges_1(001) R8
de iges_2(002) I7

should be updated.

mkv

2013-09-27 14:06

tester   ~0025776

Dear abv,

There is new warning compilation on Windows platform:
IntCurve_IntPolyPolyGen.gxx:875, MSBuild, Priority: Normal
'aNbRoots' : local variable is initialized but not referenced

abv

2013-09-27 15:54

manager   ~0025778

I have pushed the code with slight changes (removal of unused variable pointed out by mkv, swapping of continue and return, and removal of tabs) to branch CR24195_1. Please review.

Besides, I noticed that first method Perform() in this gxx file has internal variable AnErrorOccurred which is used but never changes. Hence, a piece of code aimed to deal with error situation is apparently never called. Please consider whether there is an error in that to be fixed (at least, remove that variable and inactive code).

ifv

2013-09-30 12:27

developer   ~0025793

CR24195_2 is reafy to testing
Unnecessary code is removed.

mkv

2013-10-02 08:32

tester   ~0025830

Dear BugMaster,

Branch CR24195_2 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
SHA-1: d4022b634a6a2c915939f3995a4e8ed86a9667af

Number of compiler warnings:

occt component :
Linux: 426 (426 on master)
Windows: 24 (24 on master)

products component :
Linux: 189 (190 on master)
Windows: 287 (287 on master)

Regressions/Differences:

http://occt-tests/CR24195-2-master-occt/Debian60-64/bugs/moddata_2/bug23587.html
http://occt-tests/CR24195-2-master-occt/Windows-32-VC9/bugs/moddata_2/bug23587.html
bugs moddata_2(012) bug23587

http://occt-tests/CR24195-2-master-occt/Debian60-64/de/iges_1/P5.html
http://occt-tests/CR24195-2-master-occt/Debian60-64/de/iges_1/R8.html
http://occt-tests/CR24195-2-master-occt/Windows-32-VC9/de/iges_1/P5.html
http://occt-tests/CR24195-2-master-occt/Windows-32-VC9/de/iges_1/R8.html
de iges_1(001) P5, R8

http://occt-tests/CR24195-2-master-occt/Debian60-64/de/iges_2/H9.html
de iges_2(002) H9 - only on Linux

http://occt-tests/CR24195-2-master-occt/Debian60-64/de/iges_2/I7.html
http://occt-tests/CR24195-2-master-occt/Windows-32-VC9/de/iges_2/I7.html
de iges_2(002) I7

http://occt-tests/CR24195-2-master-occt/Debian60-64/de/step_3/E6.html
http://occt-tests/CR24195-2-master-occt/Windows-32-VC9/de/step_3/E6.html
de step_3(006) E6

Testing cases:
Not needed

Testing on Linux:
Total MEMORY difference: 364618636 / 364507312
Total CPU difference: 41584.19000000114 / 44036.90000000129

Testing on Windows:
Total MEMORY difference: 432564408 / 432531108
Total CPU difference: 37209.25 / 34282.875

There are not differences in images found by testdiff.

ifv

2013-10-02 13:14

developer   ~0025841

CR24195_2 with fix for regressions is ready for testing

ifv

2013-10-02 13:14

developer   ~0025842

CR24195_2 with fix for regressions is ready for testing

apn

2013-10-03 16:28

administrator   ~0025879

Dear BugMaster,

Branch CR24195_2 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
SHA-1: 32b8ddbd916352873b73874c3bd236196b08035b

Number of compiler warnings:

occt component :
Linux: 426 (426 on master)
Windows: 24 (24 on master)

products component :
Linux: 190 (190 on master)
Windows: 287 (287 on master)

Regressions/Differences:
No regressions/differences
Test cases de/iges_1/R8 and de/iges_2/I7 were modified according to new data

Testing cases:
Not needed

Testing on Linux:
Total MEMORY difference: 366153100 / 366159080
Total CPU difference: 46481.86000000062 / 44691.370000001305

Testing on Windows:
Total MEMORY difference: 432915796 / 433120940
Total CPU difference: 36949.984375 / 34518.96875

There are not differences in images found by testdiff.

Related Changesets

occt: master 1665a85a

2013-10-03 12:30:51

ifv


Committer: bugmaster Details Diff
0024195: Use of uninitialized data in IntCurve_IntPolyPolyGen.gxx

1. Inserting in method IntCurve_IntPolyPolyGen::findIntersect() correct treatment of situation when intersection algorithm cannot find a solution.
2. Modification test cases de/iges_1/R8 and de/iges_2/I7 according to new data
Affected Issues
0024195
mod - src/IntCurve/IntCurve_ExactIntersectionPoint.gxx Diff File
mod - src/IntCurve/IntCurve_IntPolyPolyGen.gxx Diff File
mod - tests/de/iges_1/R8 Diff File
mod - tests/de/iges_2/I7 Diff File

Issue History

Date Modified Username Field Change
2013-09-20 13:54 abv New Issue
2013-09-20 13:54 abv Assigned To => ifv
2013-09-25 14:27 ifv Note Added: 0025730
2013-09-25 14:27 ifv Status new => resolved
2013-09-25 14:28 ifv Note Added: 0025731
2013-09-25 14:28 ifv Status resolved => reviewed
2013-09-25 14:37 mkv Assigned To ifv => mkv
2013-09-27 07:37 mkv Note Added: 0025758
2013-09-27 07:37 mkv Assigned To mkv => ifv
2013-09-27 07:37 mkv Status reviewed => assigned
2013-09-27 10:45 abv Note Added: 0025767
2013-09-27 10:47 abv Assigned To ifv => gka
2013-09-27 12:54 gka Note Added: 0025775
2013-09-27 12:54 gka Status assigned => resolved
2013-09-27 12:54 gka Status resolved => reviewed
2013-09-27 14:06 mkv Note Added: 0025776
2013-09-27 14:06 mkv Assigned To gka => abv
2013-09-27 14:06 mkv Status reviewed => feedback
2013-09-27 15:54 abv Note Added: 0025778
2013-09-27 15:54 abv Assigned To abv => ifv
2013-09-27 15:54 abv Status feedback => resolved
2013-09-30 12:27 ifv Note Added: 0025793
2013-09-30 12:27 ifv Status resolved => reviewed
2013-09-30 15:50 mkv Assigned To ifv => mkv
2013-10-02 08:32 mkv Note Added: 0025830
2013-10-02 08:33 mkv Assigned To mkv => ifv
2013-10-02 08:33 mkv Status reviewed => assigned
2013-10-02 13:14 ifv Note Added: 0025841
2013-10-02 13:14 ifv Status assigned => resolved
2013-10-02 13:14 ifv Note Added: 0025842
2013-10-02 13:14 ifv Status resolved => reviewed
2013-10-02 14:21 mkv Assigned To ifv => mkv
2013-10-03 16:28 apn Note Added: 0025879
2013-10-03 16:29 apn Test case number => Not needed
2013-10-03 16:29 apn Assigned To mkv => bugmaster
2013-10-03 16:29 apn Status reviewed => tested
2013-10-04 12:48 bugmaster Changeset attached => occt master 1665a85a
2013-10-04 12:48 bugmaster Status tested => verified
2013-10-04 12:48 bugmaster Resolution open => fixed
2013-10-04 13:59 bugmaster Assigned To bugmaster => abv
2013-10-04 13:59 bugmaster Status verified => assigned
2013-10-04 13:59 bugmaster Status assigned => resolved
2013-10-04 13:59 bugmaster Status resolved => reviewed
2013-10-04 13:59 bugmaster Status reviewed => verified
2013-12-19 13:52 bugmaster Status verified => closed
2013-12-19 13:58 bugmaster Fixed in Version => 6.7.0