Archived issue #0026871
[Regression in 6.9.0] Projecting a curve hangs inside Approx_FitAndDivide2d
Description
Curve projection (B-Spline onto cylindrical surface) hangs in OCC 6.9.x while succeeds in 6.8.0.
The symptoms are similar to #0026339 (some infinite loop) however the stack is different and the control is never going out of Approx_FitAndDivide2d. So these can be distinct issues.
(Severity is set to 'major' as hang apparently leads to necessity of application termination and hence data loss).
The symptoms are similar to #0026339 (some infinite loop) however the stack is different and the control is never going out of Approx_FitAndDivide2d. So these can be distinct issues.
(Severity is set to 'major' as hang apparently leads to necessity of application termination and hence data loss).
Steps to reproduce
Use the following archive and its 'curve3d' and 'surface' files. Respective *_draw files can be loaded in DRAW.
Excerpt of the C++ reproducer:
void Algo_CurveTest::Project2d()
{
QFETCH(QString, dir);
QFETCH(QString, curve);
QFETCH(double, first);
QFETCH(double, last);
QFETCH(QString, surface);
//curve
Handle(Geom_Curve) aC;
QVERIFY (Read (dir + curve, aC));
QVERIFY (!aC.IsNull());
//surface
Handle(Geom_Surface) aS;
QVERIFY (Read (dir + surface, aS));
QVERIFY (!aS.IsNull());
//algorithm
double aTol = Precision::Confusion();
ShapeConstruct_ProjectCurveOnSurface aProj;
aProj.Init (aS, aTol);
Handle_Geom2d_Curve aPC;
aProj.Perform (aC, first, last, aPC);
}
Excerpt of the C++ reproducer:
void Algo_CurveTest::Project2d()
{
QFETCH(QString, dir);
QFETCH(QString, curve);
QFETCH(double, first);
QFETCH(double, last);
QFETCH(QString, surface);
//curve
Handle(Geom_Curve) aC;
QVERIFY (Read (dir + curve, aC));
QVERIFY (!aC.IsNull());
//surface
Handle(Geom_Surface) aS;
QVERIFY (Read (dir + surface, aS));
QVERIFY (!aS.IsNull());
//algorithm
double aTol = Precision::Confusion();
ShapeConstruct_ProjectCurveOnSurface aProj;
aProj.Init (aS, aTol);
Handle_Geom2d_Curve aPC;
aProj.Perform (aC, first, last, aPC);
}
Public activity
10 archived notes
Participants are labeled by their role within this record.
This may have something to do with the explicit terminating parameters. The original curve is Trimmed Curve with a range [-4.[revision removed]-018, 1.6876844582553601] and the basis curve has a range [-0.012704486752778054, 1.6876844582553601].
If to create a trimmed curve with natural boundaries then the algorithm succeeds.
If to create a trimmed curve with a range [0, 1.6876844582553601] (where 0 is an existing knot) the algorithm succeeds as well.
So it might be something related to the range [-4.[revision removed]-018, 0].
Note for the C++ reproducer - first and last are trimming parameters to be taken from the trimmed curve.
If to create a trimmed curve with natural boundaries then the algorithm succeeds.
If to create a trimmed curve with a range [0, 1.6876844582553601] (where 0 is an existing knot) the algorithm succeeds as well.
So it might be something related to the range [-4.[revision removed]-018, 0].
Note for the C++ reproducer - first and last are trimming parameters to be taken from the trimmed curve.
Branch [archived branch] has been created by Participant.
[revision removed]
Detailed log of new commits:
Author: azv
Date: Tue Nov 17 16:46:32 2015 +0300
0026871: [Regression in 6.9.0] Projecting a curve hangs inside Approx_FitAndDivide2d
Fix checking of B-spline parametrization speed
[revision removed]
Detailed log of new commits:
Author: azv
Date: Tue Nov 17 16:46:32 2015 +0300
0026871: [Regression in 6.9.0] Projecting a curve hangs inside Approx_FitAndDivide2d
Fix checking of B-spline parametrization speed
Dear Mikhail,
Please review branch CR26871.
Please review branch CR26871.
Reviewed.
Branch [archived branch] has been updated forcibly by Participant.
[revision removed]
[revision removed]
Branch [archived branch] has been updated by Participant.
[revision removed]
Detailed log of new commits:
Author: ski
Date: Mon Nov 23 14:18:32 2015 +0300
Test case for issue CR26871
[revision removed]
Detailed log of new commits:
Author: ski
Date: Mon Nov 23 14:18:32 2015 +0300
Test case for issue CR26871
Dear azv,
could you please review following test case
bugs heal bug26871
could you please review following test case
bugs heal bug26871
Test case is OK.
Dear Commenter 1,
Branch CR26871 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS: 129 (129 on master)
products component:
Linux: 39 (39 on master)
Windows: 0 (0 on master)
Regressions/Differences:
Not detected
Testing cases:
bugs heal bug26871 - OK
http://occt-tests/CR26871-master-occt-64/Debian70-64/bugs/heal/bug26871.html
http://occt-tests/CR26871-master-occt-64/Windows-64-VC10/bugs/heal/bug26871.html
Testing on Linux:
Total MEMORY difference: 92872489 / 92882537 [-0.01%]
Total CPU difference: 19660.189999999657 / 19535.239999999845 [+0.64%]
Testing on Windows:
Total MEMORY difference: 58071891 / 58096109 [-0.04%]
Total CPU difference: 18172.338088598757 / 18232.367273398875 [-0.33%]
Branch CR26871 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS: 129 (129 on master)
products component:
Linux: 39 (39 on master)
Windows: 0 (0 on master)
Regressions/Differences:
Not detected
Testing cases:
bugs heal bug26871 - OK
http://occt-tests/CR26871-master-occt-64/Debian70-64/bugs/heal/bug26871.html
http://occt-tests/CR26871-master-occt-64/Windows-64-VC10/bugs/heal/bug26871.html
Testing on Linux:
Total MEMORY difference: 92872489 / 92882537 [-0.01%]
Total CPU difference: 19660.189999999657 / 19535.239999999845 [+0.64%]
Testing on Windows:
Total MEMORY difference: 58071891 / 58096109 [-0.04%]
Total CPU difference: 18172.338088598757 / 18232.367273398875 [-0.33%]
Branch [archived branch] has been deleted by Participant.
[revision removed]
[revision removed]