View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0032678 | Community | OCCT:Coding | public | 2021-11-22 02:01 | 2023-02-03 05:04 |
Reporter | galbramc | Assigned To | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Platform | Linux | OS | Ubuntu | ||
Product Version | 7.5.0 | ||||
Target Version | 7.7.0 | Fixed in Version | 7.7.0 | ||
Summary | 0032678: Coding Rules, ApproxInt_SvSurfaces - eliminate GCC -fsanitize=undefined error | ||||
Description | Errors reported by compiling with -fsanitize=undefined using g++ 11 (as well as clang 13 on macOS) and running our test suite: src/ApproxInt/ApproxInt_SvSurfaces.hxx:92:12: runtime error: load of value 94, which is not a valid value for type 'bool' src/ApproxInt/ApproxInt_SvSurfaces.hxx:92:12: runtime error: load of value 136, which is not a valid value for type 'bool' src/ApproxInt/ApproxInt_SvSurfaces.hxx:92:12: runtime error: load of value 88, which is not a valid value for type 'bool' This looks like it might be an issue of uninitialized data, but I've not looked at it closely. | ||||
Steps To Reproduce | Compile with "-fsanitize=undefined -fno-omit-frame-pointer" and run your test suite. | ||||
Tags | No tags attached. | ||||
Test case number | N/A | ||||
|
Branch CR32678 has been created by kgv. SHA-1: 02ee7507659816e5a3e54d4dc1487ca9f423b929 Detailed log of new commits: Author: kgv Date: Mon Nov 22 02:13:56 2021 +0300 0032678: Coding Rules, ApproxInt_SvSurfaces - eliminate GCC -fsanitize=undefined error |
|
Could you check if this error is caused by uninitialized variable (branch CR32678) or something else? |
|
valgrind did sussed out uninitialized data, but I'm not sure if it's the same problem... ==2972465== Conditional jump or move depends on uninitialised value(s) ==2972465== at 0x60AE2DC: GeomInt_TheMultiLineOfWLApprox::MakeMLBetween(int, int, int) const (ApproxInt_MultiLine.gxx:321) ==2972465== by 0x609C98E: GeomInt_TheMultiLineToolOfWLApprox::MakeMLBetween(GeomInt_TheMultiLineOfWLApprox const&, int, int, int) (ApproxInt_MultiLineTool.lxx:116) ==2972465== by 0x60979F0: GeomInt_TheComputeLineBezierOfWLApprox::Perform(GeomInt_TheMultiLineOfWLApprox const&) (Approx_ComputeLine.gxx:941) ==2972465== by 0x60B5F80: GeomInt_WLApprox::buildCurve(opencascade::handle<IntPatch_WLine> const&, void*) (ApproxInt_Approx.gxx:648) ==2972465== by 0x60B4C9F: GeomInt_WLApprox::Perform(opencascade::handle<Adaptor3d_Surface> const&, opencascade::handle<Adaptor3d_Surface> const&, opencascade::handle<IntPatch_WLine> const&, bool, bool, bool, int, int) (ApproxInt_Approx.gxx:337) ==2972465== by 0x5C7A7FB: IntTools_FaceFace::MakeCurve(int, opencascade::handle<Adaptor3d_TopolTool> const&, opencascade::handle<Adaptor3d_TopolTool> const&, double) (IntTools_FaceFace.cxx:1260) ==2972465== by 0x5C7745A: IntTools_FaceFace::Perform(TopoDS_Face const&, TopoDS_Face const&, bool) (IntTools_FaceFace.cxx:561) ==2972465== by 0x5D5F14A: BOPAlgo_FaceFace::Perform() (BOPAlgo_PaveFiller_6.cxx:187) ==2972465== by 0x5D64ACB: BOPTools_Parallel::Functor<NCollection_Vector<BOPAlgo_FaceFace> >::operator()(int) const (BOPTools_Parallel.hxx:40) ==2972465== by 0x5D652AF: OSD_Parallel::FunctorWrapperForThreadPool<BOPTools_Parallel::Functor<NCollection_Vector<BOPAlgo_FaceFace> > >::operator()(int, int) const (OSD_Parallel.hxx:256) ==2972465== by 0x5D6522F: OSD_ThreadPool::Job<OSD_Parallel::FunctorWrapperForThreadPool<BOPTools_Parallel::Functor<NCollection_Vector<BOPAlgo_FaceFace> > > >::Perform(int) (OSD_ThreadPool.hxx:299) ==2972465== by 0x579CBD1: OSD_ThreadPool::performJob(opencascade::handle<Standard_Failure>&, OSD_ThreadPool::JobInterface*, int) (OSD_ThreadPool.cxx:286) ==2972465== Uninitialised value was created by a stack allocation ==2972465== at 0x60B46DB: GeomInt_WLApprox::Perform(opencascade::handle<Adaptor3d_Surface> const&, opencascade::handle<Adaptor3d_Surface> const&, opencascade::handle<IntPatch_WLine> const&, bool, bool, bool, int, int) (ApproxInt_Approx.gxx:230) ==2972465== |
|
Any luck with this? Would you like me to try to narrow down which variable on the stack is not initialized in GeomInt_WLApprox::Perform? |
|
If CR32678 doesn't change anything, then no, I don't know yet where to look at. .gxx files is a legacy of statically generated templates (by WOK), so that apart from cryptic sanitizer logs, it is difficult to read C++ code here - might be better to first rewrite the code with help of C++ templates. |
|
Sorry I didn't notice the new constructor the first the I looked at CR32678. Yes this branch does fix both the undefined analyzer warning and valgrind also runs clean. I ran through our entire test suite to double check. |
|
Branch CR32678 has been updated forcibly by kgv. SHA-1: 4381c08132b8b9c7d66748825465554886d684d3 |
|
> Yes this branch does fix both the undefined analyzer warning Great, then let's merge the fix and register new issues of analyzer will find something more. |
|
Please raise the patch - OCCT: branch CR32678. http://jenkins-test-12.nnov.opencascade.com:8080/view/CR32678-master-KGV/ |
|
With this patch, all of our test suite runs clean. I will submit new issues if something comes up in the future. Thank you for all your help! |
|
Combination - OCCT branch : IR-2021-12-10 master SHA - e463b2f685d8c815f8a7ab996c6843808e8b1430 49e51745631c52b6c452c65adae4d6dfa21a1b1e Products branch : IR-2021-12-10 SHA - 6377a4e004f3c988c651adf5eca35203f239b1c2 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: Debian80-64: OCCT Total CPU difference: 18222.380000000427 / 18166.60000000042 [+0.31%] Products Total CPU difference: 11645.100000000084 / 11658.820000000103 [-0.12%] Windows-64-VC14: OCCT Total CPU difference: 19999.4375 / 19937.953125 [+0.31%] Products Total CPU difference: 13044.453125 / 13069.28125 [-0.19%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR32678 has been deleted by mnt. SHA-1: 4381c08132b8b9c7d66748825465554886d684d3 |
occt: master 9a529829 2021-11-21 23:13:56 Committer: |
0032678: Coding Rules, ApproxInt_SvSurfaces - eliminate GCC -fsanitize=undefined error ApproxInt_SvSurfaces::myUseSolver is now initialized by default constructor. |
Affected Issues 0032678 |
|
mod - src/ApproxInt/ApproxInt_SvSurfaces.hxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2021-11-22 02:01 | galbramc | New Issue | |
2021-11-22 02:01 | galbramc | Assigned To | => kgv |
2021-11-22 02:13 | kgv | Product Version | => 7.5.0 |
2021-11-22 02:13 | kgv | Target Version | => 7.7.0 |
2021-11-22 02:13 | kgv | Summary | -fsanitize=undefined error for OCCT 7.6 => Coding Rules, ApproxInt_SvSurfaces - eliminate GCC -fsanitize=undefined error |
2021-11-22 02:14 | git | Note Added: 0105335 | |
2021-11-22 02:14 | kgv | Note Added: 0105336 | |
2021-11-22 05:37 | galbramc | Note Added: 0105341 | |
2021-11-30 22:27 | galbramc | Note Added: 0105548 | |
2021-12-01 10:45 | kgv | Note Added: 0105554 | |
2021-12-03 16:30 | galbramc | Note Added: 0105634 | |
2021-12-06 11:47 | git | Note Added: 0105693 | |
2021-12-06 11:49 | kgv | Note Added: 0105694 | |
2021-12-06 13:46 | kgv | Test case number | => N/A |
2021-12-06 13:46 | kgv | Note Added: 0105696 | |
2021-12-06 13:46 | kgv | Assigned To | kgv => bugmaster |
2021-12-06 13:46 | kgv | Status | new => resolved |
2021-12-06 13:46 | kgv | Status | resolved => reviewed |
2021-12-07 01:20 | galbramc | Note Added: 0105710 | |
2021-12-11 11:35 |
|
Note Added: 0105806 | |
2021-12-11 11:35 |
|
Status | reviewed => tested |
2021-12-11 15:14 |
|
Changeset attached | => occt master 9a529829 |
2021-12-11 15:14 |
|
Assigned To | bugmaster => smoskvin |
2021-12-11 15:14 |
|
Status | tested => verified |
2021-12-11 15:14 |
|
Resolution | open => fixed |
2021-12-11 15:26 | git | Note Added: 0105818 | |
2023-02-03 05:04 | vglukhik | Status | verified => closed |
2023-02-03 05:04 | vglukhik | Fixed in Version | => 7.7.0 |