MantisBT - Community
View Issue Details
0025794Community[OCCT] OCCT:Modeling Algorithmspublic2015-02-04 15:262015-05-14 15:31
Istvan Csanady 
bugmaster 
normalcrash 
closedfixed 
Mac OSOSX 10.10.210.10.2
 
[OCCT] 6.9.0[OCCT] 6.9.0 
0025794: Boolean operation crashes, when running from a new thread
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.
Not required
No tags attached.
related to 0025746closed bugmaster Open CASCADE Excessive memory use in math_Matrix 
zip code.zip (9,307) 2015-02-04 15:26
https://tracker.dev.opencascade.org/
Issue History
2015-02-04 15:26Istvan CsanadyNew Issue
2015-02-04 15:26Istvan CsanadyAssigned To => msv
2015-02-04 15:26Istvan CsanadyFile Added: code.zip
2015-02-04 15:35Istvan CsanadyNote Added: 0037072
2015-02-05 10:03Istvan CsanadyNote Added: 0037099
2015-02-05 12:20Istvan CsanadyNote Added: 0037106
2015-02-05 16:19msvNote Added: 0037133
2015-02-05 16:22Istvan CsanadyNote Added: 0037135
2015-02-05 17:20msvNote Added: 0037139
2015-02-05 17:29Istvan CsanadyNote Added: 0037140
2015-02-05 18:24msvNote Added: 0037155
2015-02-05 18:24msvAssigned Tomsv => Istvan Csanady
2015-02-05 18:24msvStatusnew => feedback
2015-02-05 19:23Istvan CsanadyNote Added: 0037157
2015-02-05 19:27Istvan CsanadyNote Added: 0037158
2015-02-05 19:32Istvan CsanadyNote Added: 0037159
2015-02-06 10:45msvNote Added: 0037169
2015-02-06 11:12Istvan CsanadyNote Added: 0037170
2015-02-09 11:22msvNote Added: 0037220
2015-03-14 20:12Istvan CsanadyNote Added: 0038366
2015-03-14 20:36msvNote Added: 0038368
2015-03-14 20:36msvAssigned ToIstvan Csanady => bugmaster
2015-03-14 20:36msvStatusfeedback => reviewed
2015-03-14 20:53abvRelationship addedrelated to 0025746
2015-03-14 20:56abvNote Added: 0038369
2015-03-14 20:56abvAssigned Tobugmaster => dbv
2015-03-14 20:56abvStatusreviewed => feedback
2015-03-17 12:08dbvNote Added: 0038419
2015-03-17 12:09dbvAssigned Todbv => msv
2015-03-17 12:41abvNote Added: 0038422
2015-03-17 12:44Istvan CsanadyNote Added: 0038423
2015-03-17 17:44dbvNote Added: 0038444
2015-03-17 18:03dbvNote Edited: 0038444bug_revision_view_page.php?bugnote_id=38444#r9640
2015-03-19 10:39msvNote Added: 0038676
2015-03-19 10:39msvStatusfeedback => assigned
2015-04-16 12:12msvAssigned Tomsv => dbv
2015-04-16 12:15msvNote Added: 0039837
2015-04-16 12:57dbvNote Added: 0039850
2015-04-16 12:57dbvAssigned Todbv => msv
2015-04-16 12:57dbvStatusassigned => resolved
2015-04-16 12:57dbvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=10029#r10029
2015-04-16 13:17msvNote Added: 0039854
2015-04-16 13:17msvAssigned Tomsv => bugmaster
2015-04-16 13:17msvStatusresolved => reviewed
2015-04-17 16:28bugmasterStatusreviewed => verified
2015-04-17 16:28bugmasterResolutionopen => fixed
2015-05-14 15:28aivStatusverified => closed
2015-05-14 15:31aivFixed in Version => 6.9.0

Notes
(0037072)
Istvan Csanady   
2015-02-04 15:35   
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
(0037099)
Istvan Csanady   
2015-02-05 10:03   
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;
}
(0037106)
Istvan Csanady   
2015-02-05 12:20   
The existence of the bug has been confirmed on Linux too.
(0037133)
msv   
2015-02-05 16:19   
What about Windows? Is it reproducible there?
(0037135)
Istvan Csanady   
2015-02-05 16:22   
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;
}
(0037139)
msv   
2015-02-05 17:20   
In the updated version, you have added the line:

36a37
> BOPCol_ListOfShape listOfShapes;

Is it sensible? Does it impact anything?
(0037140)
Istvan Csanady   
2015-02-05 17:29   
No, it's not.
(0037155)
msv   
2015-02-05 18:24   
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;
}
(0037157)
Istvan Csanady   
2015-02-05 19:23   
Still crashing. I will try to run it with some stack checking tool.
(0037158)
Istvan Csanady   
2015-02-05 19:27   
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
(0037159)
Istvan Csanady   
2015-02-05 19:32   
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.
(0037169)
msv   
2015-02-06 10:45   
Could you check this issue with the fix contained in the git branch CR25720?
(0037170)
Istvan Csanady   
2015-02-06 11:12   
I already did, and it did not help unfortunately.
(0037220)
msv   
2015-02-09 11:22   
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.
(0038366)
Istvan Csanady   
2015-03-14 20:12   
This can be closed, probably it was caused by the stack overflow issue. http://dev.opencascade.org/index.php?q=node/1067 [^]
(0038368)
msv   
2015-03-14 20:36   
Dear bugmaster, please close this bug.
(0038369)
abv   
2015-03-14 20:56   
Dmitry, could you please check if this issue can be reproduced on Mac OS X?
(0038419)
dbv   
2015-03-17 12:08   
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
(0038422)
abv   
2015-03-17 12:41   
Dmitry, do you have details on the nature of crash (stack overflow, exception, etc.)?
(0038423)
Istvan Csanady   
2015-03-17 12:44   
You can check if this problem caused by the math_*Tab stack allocation problem simply by reducing the size of the statically allocated arrays.
(0038444)
dbv   
2015-03-17 17:44   
(edited on: 2015-03-17 18:03)
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 [^]

(0038676)
msv   
2015-03-19 10:39   
We shall check the state after fixing related 0025746.
(0039837)
msv   
2015-04-16 12:15   
Dear dbv, please check the behavior on iOS with the fix for 0025746. Turn the state to resolved if it is fixed.
(0039850)
dbv   
2015-04-16 12:57   
Issue not reproduced on Mac OS X with patch from 0025746
(0039854)
msv   
2015-04-16 13:17   
Dear bugmaster, please close this bug along with 0025746.