View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0025794 | Community | OCCT:Modeling Algorithms | public | 2015-02-04 15:26 | 2015-05-14 15:31 |
Reporter | Istvan Csanady | Assigned To | bugmaster | ||
Priority | normal | Severity | crash | ||
Status | closed | Resolution | fixed | ||
Platform | Mac OS | OS | OSX 10.10.2 | ||
Target Version | 6.9.0 | Fixed in Version | 6.9.0 | ||
Summary | 0025794: Boolean operation crashes, when running from a new thread | ||||
Description | See the attached code. It should not crash, since nothing is running on other threads (so it is not the question of thread safety). This issue probably exists in single threaded execution as well, it just does not cause any problem in that case. Valgrind didn't reveal any problem. Tested it with the current master branch. | ||||
Steps To Reproduce | Not required | ||||
Tags | No tags attached. | ||||
Test case number | |||||
|
code.zip (9,307 bytes) |
|
Callstack: #0 0x000000010067621b in math_FunctionSetRoot::Perform(math_FunctionSetWithDerivatives&, math_Vector const&, math_Vector const&, math_Vector const&, unsigned int) at /Users/icsanady/occt_git/occt/src/math/math_FunctionSetRoot.cxx:709 0000001 0x00000001002f1ad7 in GeomInt_TheImpPrmSvSurfacesOfWLApprox::Compute(double&, double&, double&, double&, gp_Pnt&, gp_Vec&, gp_Vec2d&, gp_Vec2d&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_ImpPrmSvSurfaces.gxx:320 0000002 0x00000001002f001b in GeomInt_TheImpPrmSvSurfacesOfWLApprox::TangencyOnSurf1(double, double, double, double, gp_Vec2d&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_ImpPrmSvSurfaces.gxx:93 #3 0x00000001002f695b in GeomInt_TheMultiLineOfWLApprox::Tangency(int, TColgp_Array1OfVec&, TColgp_Array1OfVec2d&) const at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_MultiLine.gxx:307 #4 0x00000001002eb0fb in GeomInt_TheMultiLineToolOfWLApprox::Tangency(GeomInt_TheMultiLineOfWLApprox const&, int, TColgp_Array1OfVec&, TColgp_Array1OfVec2d&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_MultiLineTool.lxx:78 #5 0x00000001002e3439 in GeomInt_TheComputeLineOfWLApprox::FirstTangencyVector(GeomInt_TheMultiLineOfWLApprox const&, int, math_Vector&) const at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/Approx_BSplComputeLine.gxx:207 #6 0x00000001002e9b51 in GeomInt_TheComputeLineOfWLApprox::Interpol(GeomInt_TheMultiLineOfWLApprox const&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/Approx_BSplComputeLine.gxx:1309 0000007 0x00000001002e85a0 in GeomInt_TheComputeLineOfWLApprox::Compute(GeomInt_TheMultiLineOfWLApprox const&, int, int, math_Vector&, TColStd_Array1OfReal const&, TColStd_Array1OfInteger&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/Approx_BSplComputeLine.gxx:914 0000008 0x00000001002e67f9 in GeomInt_TheComputeLineOfWLApprox::Perform(GeomInt_TheMultiLineOfWLApprox const&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/Approx_BSplComputeLine.gxx:676 0000009 0x00000001002ff40a in GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, IntSurf_Quadric const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_Approx.gxx:850 #10 0x00000001002fea11 in GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, Handle_Adaptor3d_HSurface const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/ApproxInt_Approx.gxx:634 0000011 0x00000001000b96b6 in IntTools_FaceFace::MakeCurve(int, Handle_Adaptor3d_TopolTool const&, Handle_Adaptor3d_TopolTool const&) at /Users/icsanady/occt_git/occt/src/IntTools/IntTools_FaceFace.cxx:1860 #12 0x00000001000b0a38 in IntTools_FaceFace::Perform(TopoDS_Face const&, TopoDS_Face const&) at /Users/icsanady/occt_git/occt/src/IntTools/IntTools_FaceFace.cxx:769 0000013 0x0000000100033e22 in BOPAlgo_FaceFace::Perform() at /Users/icsanady/occt_git/occt/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:156 0000014 0x0000000100032850 in BOPCol_TBBFunctor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> >::operator()(serial_range<int> const&) const at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/BOPCol_TBB.hxx:107 0000015 0x000000010002af32 in BOPCol_TBBCnt<BOPCol_TBBFunctor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> >, BOPCol_NCVector<BOPAlgo_FaceFace> >::Perform(unsigned int, BOPCol_NCVector<BOPAlgo_FaceFace>&) at /Users/icsanady/occt_git/occt/adm/mac/xcd/../../../inc/BOPCol_TBB.hxx:147 0000016 0x000000010001f30b in BOPAlgo_PaveFiller::PerformFF() at /Users/icsanady/occt_git/occt/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:273 0000017 0x00000001000075f6 in BOPAlgo_PaveFiller::PerformInternal() at /Users/icsanady/occt_git/occt/src/BOPAlgo/BOPAlgo_PaveFiller.cxx:262 0000018 0x00000001000073b7 in BOPAlgo_PaveFiller::Perform() at /Users/icsanady/occt_git/occt/src/BOPAlgo/BOPAlgo_PaveFiller.cxx:202 0000019 0x0000000100001b0c in __main_block_invoke at /Users/icsanady/Desktop/booleancrash/booleancrash/main.cpp:54 |
|
The problem can be reproduced with pure C++11 code (without using GCD): #include <iostream> #include <TopoDS_Shape.hxx> #include <Geom2dAPI_PointsToBSpline.hxx> #include <TColgp_Array1OfPnt2d.hxx> #include <Geom2d_BSplineCurve.hxx> #include <Geom2dConvert_ApproxCurve.hxx> #include <Geom_Plane.hxx> #include <BRepAdaptor_Curve.hxx> #include <BRepAdaptor_CompCurve.hxx> #include <BRepPrimAPI_MakeCone.hxx> #include <BOPAlgo_PaveFiller.hxx> #include <TopTools_ListOfShape.hxx> #include <BRepTools.hxx> #include <Message_ProgressIndicator.hxx> #include <future> int main(int argc, const char * argv[]) { auto f = std::async([=]() { BOPAlgo_PaveFiller paveFiller; TopTools_ListOfShape listOfShapes; TopoDS_Shape s1; TopoDS_Shape s2; std::ifstream f1("shape1.brep"); std::ifstream f2("shape2.brep"); if (f1 && f2) { BRep_Builder b; BRepTools::Read(s1, f1, b); BRepTools::Read(s2, f2, b); listOfShapes.Append(s1); listOfShapes.Append(s2); paveFiller.SetArguments(listOfShapes); paveFiller.Perform(); } }); f.get(); return 0; } |
|
The existence of the bug has been confirmed on Linux too. |
|
What about Windows? Is it reproducible there? |
|
I don't have a windows machine, but it should be straightforward to compile this code with MSVC++. Here is an updated version: #include <iostream> #include <TopoDS_Shape.hxx> #include <Geom2dAPI_PointsToBSpline.hxx> #include <TColgp_Array1OfPnt2d.hxx> #include <Geom2d_BSplineCurve.hxx> #include <Geom2dConvert_ApproxCurve.hxx> #include <Geom_Plane.hxx> #include <BRepAdaptor_Curve.hxx> #include <BRepAdaptor_CompCurve.hxx> #include <BRepPrimAPI_MakeCone.hxx> #include <BOPAlgo_PaveFiller.hxx> #include <TopTools_ListOfShape.hxx> #include <BRepTools.hxx> #include <Message_ProgressIndicator.hxx> #include <future> int main(int argc, const char * argv[]) { auto f = std::async([=]() { BOPAlgo_PaveFiller paveFiller; TopTools_ListOfShape listOfShapes; TopoDS_Shape s1; TopoDS_Shape s2; std::ifstream f1("shape1.brep"); std::ifstream f2("shape2.brep"); if (f1 && f2) { BRep_Builder b; BRepTools::Read(s1, f1, b); BRepTools::Read(s2, f2, b); BOPCol_ListOfShape listOfShapes; listOfShapes.Append(s1); listOfShapes.Append(s2); paveFiller.SetArguments(listOfShapes); paveFiller.Perform(); } }); f.get(); return 0; } |
|
In the updated version, you have added the line: 36a37 > BOPCol_ListOfShape listOfShapes; Is it sensible? Does it impact anything? |
|
No, it's not. |
|
I could not reproduce the problem on Windows (my work place). Please, try the following code, which gets working with streams out of thread function, in order to make sure the problem is not due to input streams. Also, I changed the threading support to use OCC's one. #include <iostream> #include <TopoDS_Shape.hxx> #include <Geom2dAPI_PointsToBSpline.hxx> #include <TColgp_Array1OfPnt2d.hxx> #include <Geom2d_BSplineCurve.hxx> #include <Geom2dConvert_ApproxCurve.hxx> #include <Geom_Plane.hxx> #include <BRepAdaptor_Curve.hxx> #include <BRepAdaptor_CompCurve.hxx> #include <BRepPrimAPI_MakeCone.hxx> #include <BOPAlgo_PaveFiller.hxx> #include <TopTools_ListOfShape.hxx> #include <BRepTools.hxx> #include <Message_ProgressIndicator.hxx> #include <OSD_Thread.hxx> #pragma comment(lib, "TKernel") #pragma comment(lib, "TKBRep") #pragma comment(lib, "TKMath") #pragma comment(lib, "TKTopAlgo") #pragma comment(lib, "TKG3d") #pragma comment(lib, "TKBO") struct ShapeData { TopoDS_Shape s1; TopoDS_Shape s2; }; void* func(void* theData) { BOPAlgo_PaveFiller paveFiller; TopTools_ListOfShape listOfShapes; ShapeData* aData = (ShapeData*) theData; listOfShapes.Append(aData->s1); listOfShapes.Append(aData->s2); paveFiller.SetArguments(listOfShapes); paveFiller.Perform(); return (void*)0; } int main(int argc, const char * argv[]) { OSD_Thread aThread(func); ShapeData aData; std::ifstream f1("shape1.brep"); std::ifstream f2("shape2.brep"); if (f1 && f2) { BRep_Builder b; BRepTools::Read(aData.s1, f1, b); BRepTools::Read(aData.s2, f2, b); aThread.Run(&aData); aThread.Wait(); } return 0; } |
|
Still crashing. I will try to run it with some stack checking tool. |
|
Here is a disassembly of the crashing code (crash occurs at 0x1006756c8): booleancrash`math_FunctionSetRoot::Perform(math_FunctionSetWithDerivatives&, math_Vector const&, math_Vector const&, math_Vector const&, unsigned int) at math_FunctionSetRoot.cxx:669: 0x100675690: pushq %rbp 0x100675691: movq %rsp, %rbp 0x100675694: subq $0x40f0, %rsp 0x10067569b: movq %rdi, -0x8(%rbp) 0x10067569f: movq %rsi, -0x10(%rbp) 0x1006756a3: movq %rdx, -0x18(%rbp) 0x1006756a7: movq %rcx, -0x20(%rbp) 0x1006756ab: movq %r8, -0x28(%rbp) 0x1006756af: movl %r9d, -0x2c(%rbp) 0x1006756b3: movq -0x8(%rbp), %rcx 0x1006756b7: movq -0x10(%rbp), %rdx 0x1006756bb: movq (%rdx), %rsi 0x1006756be: movq %rdx, %rdi 0x1006756c1: movq %rcx, -0x3990(%rbp) 0x1006756c8: callq *(%rsi) 0x1006756ca: movl %eax, -0x30(%rbp) 0x1006756cd: movq -0x10(%rbp), %rcx 0x1006756d1: movq (%rcx), %rdx 0x1006756d4: movq %rcx, %rdi 0x1006756d7: callq *0x8(%rdx) 0x1006756da: movl %eax, -0x34(%rbp) 0x1006756dd: cmpl $0x0, -0x34(%rbp) 0x1006756e4: jle 0x100675720 ; math_FunctionSetRoot::Perform(math_FunctionSetWithDerivatives&, math_Vector const&, math_Vector const&, math_Vector const&, unsigned int) + 144 at math_FunctionSetRoot.cxx:675 |
|
What is even more interesting, that the code crashes, when the F.NbVariables() is called, but I can call the very same method on the very same object one level higher in the call stack (in ApproxInt_ImpPrmSvSurfaces::Compute) without crashing. Very strange. |
|
Could you check this issue with the fix contained in the git branch CR25720? |
|
I already did, and it did not help unfortunately. |
|
I did not find the cause of error looking at the source code. Nor by using Intel Inspector on Windows. I shall try to inspect the problem on Linux when have time. |
|
This can be closed, probably it was caused by the stack overflow issue. http://dev.opencascade.org/index.php?q=node/1067 |
|
Dear bugmaster, please close this bug. |
|
Dmitry, could you please check if this issue can be reproduced on Mac OS X? |
|
Issue can be reproduced on Mac OS X 10.6.8 and 10.9.5 Crash log for 10.6.5: 0 libTKMath.dylib 0x00000001011a994b SVD_Decompose(math_Matrix&, math_Vector&, math_Matrix&) + 59 1 libTKMath.dylib 0x00000001011a9a83 math_SVD::math_SVD(math_Matrix const&) + 227 2 libTKMath.dylib 0x0000000101195eb6 SearchDirection(math_Matrix const&, math_Vector const&, math_Vector const&, unsigned int, math_Vector const&, math_Vector&, double&) + 774 3 libTKMath.dylib 0x0000000101196825 math_FunctionSetRoot::Perform(math_FunctionSetWithDerivatives&, math_Vector const&, math_Vector const&, math_Vector const&, unsigned int) + 1269 4 libTKGeomAlgo.dylib 0x00000001005c73d1 GeomInt_TheImpPrmSvSurfacesOfWLApprox::Compute(double&, double&, double&, double&, gp_Pnt&, gp_Vec&, gp_Vec2d&, gp_Vec2d&) + 1361 5 libTKGeomAlgo.dylib 0x00000001005c6c2f GeomInt_TheImpPrmSvSurfacesOfWLApprox::TangencyOnSurf1(double, double, double, double, gp_Vec2d&) + 143 6 libTKGeomAlgo.dylib 0x00000001005ca816 GeomInt_TheMultiLineOfWLApprox::Tangency(int, TColgp_Array1OfVec&, TColgp_Array1OfVec2d&) const + 198 7 libTKGeomAlgo.dylib 0x0000000100588142 GeomInt_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfWLApprox::Affect(GeomInt_TheMultiLineOfWLApprox const&, int, AppParCurves_Constraint&, math_Vector&, math_Vector&) + 1170 8 libTKGeomAlgo.dylib 0x0000000100588529 GeomInt_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfWLApprox::Init(GeomInt_TheMultiLineOfWLApprox const&, int, int) + 857 9 libTKGeomAlgo.dylib 0x000000010058dc24 GeomInt_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfWLApprox::GeomInt_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfWLApprox(GeomInt_TheMultiLineOfWLApprox const&, TColStd_Array1OfReal const&, TColStd_Array1OfInteger const&, int, int, AppParCurves_Constraint, AppParCurves_Constraint, int) + 916 10 libTKGeomAlgo.dylib 0x00000001005c29b4 GeomInt_TheComputeLineOfWLApprox::Interpol(GeomInt_TheMultiLineOfWLApprox const&) + 1444 11 libTKGeomAlgo.dylib 0x00000001005c3c7a GeomInt_TheComputeLineOfWLApprox::Compute(GeomInt_TheMultiLineOfWLApprox const&, int, int, math_Vector&, TColStd_Array1OfReal const&, TColStd_Array1OfInteger&) + 2730 12 libTKGeomAlgo.dylib 0x00000001005c46d5 GeomInt_TheComputeLineOfWLApprox::Perform(GeomInt_TheMultiLineOfWLApprox const&) + 1893 13 libTKGeomAlgo.dylib 0x00000001005d131e GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, IntSurf_Quadric const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) + 2830 14 libTKGeomAlgo.dylib 0x00000001005d17ff GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, Handle_Adaptor3d_HSurface const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) + 319 15 libTKBO.dylib 0x0000000116f61a12 IntTools_FaceFace::MakeCurve(int, Handle_Adaptor3d_TopolTool const&, Handle_Adaptor3d_TopolTool const&) + 10130 16 libTKBO.dylib 0x0000000116f6ce38 IntTools_FaceFace::Perform(TopoDS_Face const&, TopoDS_Face const&) + 4920 17 libTKBO.dylib 0x0000000116ed82a3 void OSD_Parallel::For<BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> > >(int, int, BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> > const&, unsigned int) + 115 18 libTKBO.dylib 0x0000000116ed35cf BOPAlgo_PaveFiller::PerformFF() + 1423 19 libTKBO.dylib 0x0000000116eb5818 BOPAlgo_PaveFiller::PerformInternal() + 184 20 libTKBO.dylib 0x0000000116eb5b9d BOPAlgo_PaveFiller::Perform() + 125 21 libTKQADraw.dylib 0x000000011969fae0 func(void*) + 96 22 libSystem.B.dylib 0x00007fff804b3fd6 _pthread_start + 331 23 libSystem.B.dylib 0x00007fff804b3e89 thread_start + 13 Crash log for 10.9.5: 0 libTKMath.dylib 0x000000010a726478 math_FunctionSetRoot::Perform(math_FunctionSetWithDerivatives&, math_Vector const&, math_Vector const&, math_Vector const&, unsigned int) + 56 (math_FunctionSetRoot.cxx:670) 1 libTKGeomAlgo.dylib 0x00000001094dbfd1 GeomInt_TheImpPrmSvSurfacesOfWLApprox::Compute(double&, double&, double&, double&, gp_Pnt&, gp_Vec&, gp_Vec2d&, gp_Vec2d&) + 6273 (ApproxInt_ImpPrmSvSurfaces.gxx:320) 2 libTKGeomAlgo.dylib 0x00000001094da5fb GeomInt_TheImpPrmSvSurfacesOfWLApprox::TangencyOnSurf1(double, double, double, double, gp_Vec2d&) + 235 (ApproxInt_ImpPrmSvSurfaces.gxx:93) 3 libTKGeomAlgo.dylib 0x00000001094e153b GeomInt_TheMultiLineOfWLApprox::Tangency(int, TColgp_Array1OfVec&, TColgp_Array1OfVec2d&) const + 699 (ApproxInt_MultiLine.gxx:307) 4 libTKGeomAlgo.dylib 0x000000010948a5eb GeomInt_TheMultiLineToolOfWLApprox::Tangency(GeomInt_TheMultiLineOfWLApprox const&, int, TColgp_Array1OfVec&, TColgp_Array1OfVec2d&) + 43 (ApproxInt_MultiLineTool.lxx:78) 5 libTKGeomAlgo.dylib 0x00000001094ce459 GeomInt_TheComputeLineOfWLApprox::FirstTangencyVector(GeomInt_TheMultiLineOfWLApprox const&, int, math_Vector&) const + 217 (Approx_BSplComputeLine.gxx:207) 6 libTKGeomAlgo.dylib 0x00000001094d4b71 GeomInt_TheComputeLineOfWLApprox::Interpol(GeomInt_TheMultiLineOfWLApprox const&) + 2305 (Approx_BSplComputeLine.gxx:1309) 7 libTKGeomAlgo.dylib 0x00000001094d35c0 GeomInt_TheComputeLineOfWLApprox::Compute(GeomInt_TheMultiLineOfWLApprox const&, int, int, math_Vector&, TColStd_Array1OfReal const&, TColStd_Array1OfInteger&) + 1024 (Approx_BSplComputeLine.gxx:914) 8 libTKGeomAlgo.dylib 0x00000001094d1819 GeomInt_TheComputeLineOfWLApprox::Perform(GeomInt_TheMultiLineOfWLApprox const&) + 1337 (Approx_BSplComputeLine.gxx:676) 9 libTKGeomAlgo.dylib 0x00000001094ea90a GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, IntSurf_Quadric const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) + 2394 (ApproxInt_Approx.gxx:850) 10 libTKGeomAlgo.dylib 0x00000001094e9f11 GeomInt_WLApprox::Perform(Handle_Adaptor3d_HSurface const&, Handle_Adaptor3d_HSurface const&, Handle_IntPatch_WLine const&, unsigned int, unsigned int, unsigned int, int, int) + 5121 (ApproxInt_Approx.gxx:635) 11 libTKBO.dylib 0x0000000110a47bf6 IntTools_FaceFace::MakeCurve(int, Handle_Adaptor3d_TopolTool const&, Handle_Adaptor3d_TopolTool const&) + 24518 (IntTools_FaceFace.cxx:1839) 12 libTKBO.dylib 0x0000000110a3ee50 IntTools_FaceFace::Perform(TopoDS_Face const&, TopoDS_Face const&) + 6752 (IntTools_FaceFace.cxx:749) 13 libTKBO.dylib 0x00000001109adda2 BOPAlgo_FaceFace::Perform() + 82 (BOPAlgo_PaveFiller_6.cxx:157) 14 libTKBO.dylib 0x00000001109ad616 BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> >::operator()(int) const + 54 (BOPCol_Parallel.hxx:46) 15 libTKBO.dylib 0x00000001109ad392 void OSD_Parallel::For<BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> > >(int, int, BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> > const&, unsigned int) + 114 (OSD_Parallel.hxx:261) 16 libTKBO.dylib 0x00000001109a9c4b BOPCol_Cnt<BOPCol_Functor<BOPAlgo_FaceFace, BOPCol_NCVector<BOPAlgo_FaceFace> >, BOPCol_NCVector<BOPAlgo_FaceFace> >::Perform(unsigned int, BOPCol_NCVector<BOPAlgo_FaceFace>&) + 75 (BOPCol_Parallel.hxx:69) 17 libTKBO.dylib 0x000000011099e7d2 BOPAlgo_PaveFiller::PerformFF() + 1762 (BOPAlgo_PaveFiller_6.cxx:270) 18 libTKBO.dylib 0x0000000110986ce6 BOPAlgo_PaveFiller::PerformInternal() + 326 (BOPAlgo_PaveFiller.cxx:263) 19 libTKBO.dylib 0x0000000110986aa7 BOPAlgo_PaveFiller::Perform() + 343 (BOPAlgo_PaveFiller.cxx:202) 20 libTKQADraw.dylib 0x0000000114af3d05 func(void*) + 133 (QABugs_19.cxx:3619) 21 libsystem_pthread.dylib 0x00007fff96d44899 _pthread_body + 138 22 libsystem_pthread.dylib 0x00007fff96d4472a _pthread_start + 137 23 libsystem_pthread.dylib 0x00007fff96d48fc9 thread_start + 13 |
|
Dmitry, do you have details on the nature of crash (stack overflow, exception, etc.)? |
|
You can check if this problem caused by the math_*Tab stack allocation problem simply by reducing the size of the statically allocated arrays. |
|
Draw crashes with SIGILL signal. Reducing the size of Buf in math_DoubleTab, as proposed, solves the problem. The problem is the same as for iOS: Mac OS X implementation of Pthreads defines a default stack size of 512 Kilobytes for subsequent threads https://developer.apple.com/library/mac/qa/qa1419/_index.html |
|
We shall check the state after fixing related 0025746. |
|
Dear dbv, please check the behavior on iOS with the fix for 0025746. Turn the state to resolved if it is fixed. |
|
Issue not reproduced on Mac OS X with patch from 0025746 |
|
Dear bugmaster, please close this bug along with 0025746. |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-02-04 15:26 | Istvan Csanady | New Issue | |
2015-02-04 15:26 | Istvan Csanady | Assigned To | => msv |
2015-02-04 15:26 | Istvan Csanady | File Added: code.zip | |
2015-02-04 15:35 | Istvan Csanady | Note Added: 0037072 | |
2015-02-05 10:03 | Istvan Csanady | Note Added: 0037099 | |
2015-02-05 12:20 | Istvan Csanady | Note Added: 0037106 | |
2015-02-05 16:19 |
|
Note Added: 0037133 | |
2015-02-05 16:22 | Istvan Csanady | Note Added: 0037135 | |
2015-02-05 17:20 |
|
Note Added: 0037139 | |
2015-02-05 17:29 | Istvan Csanady | Note Added: 0037140 | |
2015-02-05 18:24 |
|
Note Added: 0037155 | |
2015-02-05 18:24 |
|
Assigned To | msv => Istvan Csanady |
2015-02-05 18:24 |
|
Status | new => feedback |
2015-02-05 19:23 | Istvan Csanady | Note Added: 0037157 | |
2015-02-05 19:27 | Istvan Csanady | Note Added: 0037158 | |
2015-02-05 19:32 | Istvan Csanady | Note Added: 0037159 | |
2015-02-06 10:45 |
|
Note Added: 0037169 | |
2015-02-06 11:12 | Istvan Csanady | Note Added: 0037170 | |
2015-02-09 11:22 |
|
Note Added: 0037220 | |
2015-03-14 20:12 | Istvan Csanady | Note Added: 0038366 | |
2015-03-14 20:36 |
|
Note Added: 0038368 | |
2015-03-14 20:36 |
|
Assigned To | Istvan Csanady => bugmaster |
2015-03-14 20:36 |
|
Status | feedback => reviewed |
2015-03-14 20:53 |
|
Relationship added | related to 0025746 |
2015-03-14 20:56 |
|
Note Added: 0038369 | |
2015-03-14 20:56 |
|
Assigned To | bugmaster => dbv |
2015-03-14 20:56 |
|
Status | reviewed => feedback |
2015-03-17 12:08 |
|
Note Added: 0038419 | |
2015-03-17 12:09 |
|
Assigned To | dbv => msv |
2015-03-17 12:41 |
|
Note Added: 0038422 | |
2015-03-17 12:44 | Istvan Csanady | Note Added: 0038423 | |
2015-03-17 17:44 |
|
Note Added: 0038444 | |
2015-03-17 18:03 |
|
Note Edited: 0038444 | |
2015-03-19 10:39 |
|
Note Added: 0038676 | |
2015-03-19 10:39 |
|
Status | feedback => assigned |
2015-04-16 12:12 |
|
Assigned To | msv => dbv |
2015-04-16 12:15 |
|
Note Added: 0039837 | |
2015-04-16 12:57 |
|
Note Added: 0039850 | |
2015-04-16 12:57 |
|
Assigned To | dbv => msv |
2015-04-16 12:57 |
|
Status | assigned => resolved |
2015-04-16 12:57 |
|
Steps to Reproduce Updated | |
2015-04-16 13:17 |
|
Note Added: 0039854 | |
2015-04-16 13:17 |
|
Assigned To | msv => bugmaster |
2015-04-16 13:17 |
|
Status | resolved => reviewed |
2015-04-17 16:28 | bugmaster | Status | reviewed => verified |
2015-04-17 16:28 | bugmaster | Resolution | open => fixed |
2015-05-14 15:28 |
|
Status | verified => closed |
2015-05-14 15:31 |
|
Fixed in Version | => 6.9.0 |