View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0029698 | Open CASCADE | OCCT:Modeling Algorithms | public | 2018-04-16 15:04 | 2018-06-29 21:19 |
Reporter | Assigned To | ||||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 7.2.0 | ||||
Target Version | 7.3.0 | Fixed in Version | 7.3.0 | ||
Summary | 0029698: Regression vs 7.2.0: Common operation raises FLT_INVALID_OPERATION exception | ||||
Description | The problem is reproduced in the test case bugs/modalg_6/bug26952_1 if "USE_FPE_SIGNAL" turned on. The problem seems to be caused by the fix for the issue #29688. | ||||
Steps To Reproduce | test bugs modalg_6 bug26952_1 | ||||
Tags | No tags attached. | ||||
Test case number | bugs modalg_7 bug29698 | ||||
|
Branch CR29698 has been created by emv. SHA-1: e52d773ad46c6fbd56f9bdbd1972c0062abddeee Detailed log of new commits: Author: emv Date: Mon Apr 16 15:21:35 2018 +0300 0029698: Regression vs 7.2.0: Common operation raises FLT_INVALID_OPERATION exception When checking if the split edge is oriented as the original one (BOPTools_AlgoTools::IsSplitToReverse()) the tangent vectors should be computed for both edges at the same point. This point is taken on the split edge and projected on the original edge. The fix is intended to ensuring that the reference point will be taken inside the valid range of the split edge (i.e. not covered by the tolerance spheres of its bounding vertices) and the projection of this point on the original edge will be successful. |
|
Dear Mikhail, could you please review the git branch CR29698? Test results - http://jenkins-test-11.nnov.opencascade.com:8080/view/CR29698-master-emv/view/COMPARE/ |
|
src/BOPAlgo/BOPAlgo_Builder_2.cxx - Put 828,831 lines in else statement. src/BOPTools/BOPTools_AlgoTools2D.hxx - Do not change API of AttachExistingPCurve. Instead, change IsSplitToReverse. src/BOPTools/BOPTools_AlgoTools.cxx - Make several intermediate points in IsSplitToReverse to increase reliability of the method. Add error status as the optional output parameter, and generate warning in the calling method in case of error. Add a test case with "dsetsignal 1". |
|
Branch CR29698_1 has been created by emv. SHA-1: 9a58f7c24177a5653a1de1c7a6f3dfd1289fab89 Detailed log of new commits: Author: emv Date: Mon Apr 16 15:21:35 2018 +0300 0029698: Regression vs 7.2.0: Common operation raises FLT_INVALID_OPERATION exception When checking if the split edge is oriented as the original one (BOPTools_AlgoTools::IsSplitToReverse()) the tangent vectors should be computed for both edges at the same point. This point is taken on the split edge and projected on the original edge. The fix is intended to ensuring that the reference point will be taken inside the valid range of the split edge (i.e. not covered by the tolerance spheres of its bounding vertices) and the projection of this point on the original edge will be successful. Moreover, several sampling points are now taken on the split edge and processed until first valid point is found. If requested (by a not null pointer) all *BOPTools_AlgoTools::IsSplitToReverse()* methods are now return the error status of the check. Before using the returned flag, the calling program should check this error status. For successful check the error status should be equal to zero. New warning *BOPAlgo_AlertUnableToOrientTheShape* is now returned in the algorithms in Boolean component in case the check for correct shape orientation failed. Test case for the issue. |
|
Remarks have been considered. Please review the git branch CR29698_1. |
|
In IsSplitToReverse(edge,edge) revise the error codes numbers. Change theContext to const& in all APIs. |
|
Branch CR29698_1 has been updated by emv. SHA-1: ba9083f0faab10e5b02a3a0e94ab3c9bd09e1472 Detailed log of new commits: Author: emv Date: Wed Apr 18 16:40:38 2018 +0300 # Considering remarks. |
|
Please review again. |
|
Reviewed. |
|
Is this change necessary? src/BOPTools/BOPTools_AlgoTools2D.hxx: - Standard_EXPORT static Standard_Integer AttachExistingPCurve (const TopoDS_Edge& aEold, const TopoDS_Edge& aEnew, const TopoDS_Face& aF, const Handle(IntTools_Context)& aCtx); + Standard_EXPORT static Standard_Integer AttachExistingPCurve (const TopoDS_Edge& aEold, const TopoDS_Edge& aEnew, const TopoDS_Face& aF, Handle(IntTools_Context)& aCtx); It seems that aCtx is actually not changed inside that method, thus should be passed as const & to it (and all nested methods). Or does it change? |
|
This change is not actual. The actual state is in the branch CR29698_1. |
|
OOps, you are right, pardon moi! |
|
Combination - OCCT branch : CR29698_1 SHA - ba9083f0faab10e5b02a3a0e94ab3c9bd09e1472 Products branch : master SHA - 8471189e8649026d76950924f8ec2b4878cba528 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian70-64: OCCT Total CPU difference: 18210.899999999907 / 18243.73999999987 [-0.18%] Products Total CPU difference: 7498.57000000006 / 7495.350000000049 [+0.04%] Windows-64-VC10: OCCT Total CPU difference: 18015.5258833986 / 18049.78370299853 [-0.19%] Products Total CPU difference: 8244.075646299874 / 8209.739826199884 [+0.42%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR29698 has been deleted by kgv. SHA-1: e52d773ad46c6fbd56f9bdbd1972c0062abddeee |
|
Branch CR29698_1 has been deleted by kgv. SHA-1: ba9083f0faab10e5b02a3a0e94ab3c9bd09e1472 |
occt: master 80d55adf 2018-04-16 12:21:35
Committer: abv Details Diff |
0029698: Regression vs 7.2.0: Common operation raises FLT_INVALID_OPERATION exception When checking if the split edge is oriented as the original one (BOPTools_AlgoTools::IsSplitToReverse()) the tangent vectors should be computed for both edges at the same point. This point is taken on the split edge and projected on the original edge. The fix is intended to ensuring that the reference point will be taken inside the valid range of the split edge (i.e. not covered by the tolerance spheres of its bounding vertices) and the projection of this point on the original edge will be successful. Moreover, several sampling points are now taken on the split edge and processed until first valid point is found. If requested (by a not null pointer) all *BOPTools_AlgoTools::IsSplitToReverse()* methods are now return the error status of the check. Before using the returned flag, the calling program should check this error status. For successful check the error status should be equal to zero. New warning *BOPAlgo_AlertUnableToOrientTheShape* is now returned in the algorithms in Boolean component in case the check for correct shape orientation failed. Test case for the issue. |
Affected Issues 0029698 |
|
mod - dox/dev_guides/upgrade/upgrade.md | Diff File | ||
mod - src/BOPAlgo/BOPAlgo.msg | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Alerts.hxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_BOPAlgo_msg.pxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder.hxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder_1.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder_2.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder_3.cxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools.cxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools.hxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools2D.hxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools2D_1.cxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools3D.cxx | Diff File | ||
mod - src/BOPTools/BOPTools_AlgoTools3D.hxx | Diff File | ||
add - tests/bugs/modalg_7/bug29698 | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-04-16 15:04 |
|
New Issue | |
2018-04-16 15:04 |
|
Assigned To | => msv |
2018-04-16 15:05 |
|
Assigned To | msv => emv |
2018-04-16 15:05 |
|
Status | new => assigned |
2018-04-16 15:21 | git | Note Added: 0075464 | |
2018-04-17 08:04 |
|
Note Added: 0075468 | |
2018-04-17 08:04 |
|
Assigned To | emv => msv |
2018-04-17 08:04 |
|
Status | assigned => resolved |
2018-04-17 12:24 |
|
Note Added: 0075472 | |
2018-04-17 12:24 |
|
Assigned To | msv => emv |
2018-04-17 12:24 |
|
Status | resolved => assigned |
2018-04-17 15:25 | git | Note Added: 0075477 | |
2018-04-18 08:18 |
|
Note Added: 0075501 | |
2018-04-18 08:18 |
|
Assigned To | emv => msv |
2018-04-18 08:18 |
|
Status | assigned => resolved |
2018-04-18 10:50 |
|
Note Added: 0075506 | |
2018-04-18 10:50 |
|
Assigned To | msv => emv |
2018-04-18 10:50 |
|
Status | resolved => assigned |
2018-04-18 16:40 | git | Note Added: 0075522 | |
2018-04-19 08:15 |
|
Note Added: 0075532 | |
2018-04-19 08:15 |
|
Assigned To | emv => msv |
2018-04-19 08:15 |
|
Status | assigned => resolved |
2018-04-19 10:09 |
|
Note Added: 0075535 | |
2018-04-19 10:09 |
|
Assigned To | msv => bugmaster |
2018-04-19 10:09 |
|
Status | resolved => reviewed |
2018-05-03 10:26 |
|
Note Added: 0075762 | |
2018-05-03 10:36 |
|
Note Added: 0075763 | |
2018-05-03 11:44 |
|
Note Added: 0075771 | |
2018-05-23 15:21 | bugmaster | Note Added: 0076178 | |
2018-05-23 15:21 | bugmaster | Status | reviewed => tested |
2018-05-23 15:22 | bugmaster | Test case number | => bugs modalg_7 bug29698 |
2018-05-24 16:02 |
|
Changeset attached | => occt master 80d55adf |
2018-05-24 16:02 |
|
Assigned To | bugmaster => abv |
2018-05-24 16:02 |
|
Status | tested => verified |
2018-05-24 16:02 |
|
Resolution | open => fixed |
2018-05-24 18:13 | git | Note Added: 0076265 | |
2018-05-24 18:13 | git | Note Added: 0076266 | |
2018-06-29 21:13 |
|
Fixed in Version | => 7.3.0 |
2018-06-29 21:19 |
|
Status | verified => closed |