DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0026871

[Regression in 6.9.0] Projecting a curve hangs inside Approx_FitAndDivide2d

CommunityOCCT:Modeling Algorithmsclosed10 public notes

Search issues

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).

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);
}

Public activity

10 archived notes

Participants are labeled by their role within this record.

01Author
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.
02Commenter 2
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
03Commenter 3
Dear Mikhail,

Please review branch CR26871.
04Commenter 4
Reviewed.
05Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
06Commenter 2
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

07Commenter 7
Dear azv,
could you please review following test case
bugs heal bug26871
08Commenter 8
Test case is OK.
09Commenter 9
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%]
10Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]