[Gmsh] Gmsh API run-time crash
Tommy Binford
tbinford at gmail.com
Wed Apr 20 02:49:13 CEST 2011
Resolved this problem. I have the Terminal option enabled so I missed
the error message telling me SVD needed LAPACK. When running
CMake-GUI, I forgot to change the CMakeLists.txt to correctly locate
my LAPACK and BLAS as I did originally.
The problem manifested itself in the section requiring the results of
computeMeanPlane() to be valid. The library crashes in meshGenerator()
when LAPACK is not correctly linked.
Trilinos was a red herring. There was no conflict between the libraries.
Best,
Tommy
On Tue, Apr 19, 2011 at 11:50 AM, Tommy Binford <tbinford at gmail.com> wrote:
> I have been using the Gmsh API for about two weeks now on Windows. I ran into
> some trouble with a library conflict using Trilinos and Gmsh together
> in the same
> project in Release mode. Before that, Gmsh was working fine.
>
> I purged Gmsh and started a separate project to test my hypothesis against all
> the Trilinos libraries. After finding that one particular library
> seemed to cause the
> problem, I started putting things back together.
>
> Once again, I purged Gmsh, untarred the source, ran cmake-gui, and generated
> a VS2010 project. There were no errors in the build, as before. However, now
> Gmsh crashes during the call to meshGenerator() [meshGFace.cpp] attempting
> to loop over doc.numTriangles. Debugging shows doc.points is empty. No errors
> were thrown except what amounts to a segfault. If I skip this section
> in the debugger,
> the mesh file is generated.
>
> Can you suggest what I may have missed when configuring and building the Gmsh
> lib on my second time around? Perhaps I added a package or removed a package
> that causes this error? Everything works perfectly in Linux.
>
> List of enabled options (need 2d mesh generation only):
> ACIS
> ANN
> BAMG
> GMM
> MATHEX
> MESH
> OCC
> PLUGINS
> PARSER
> POST
>
> Offending section of code with annotation:
> ====================================================
> // Builds An initial triangular mesh that respects the boundaries of
> // the domain, including embedded points and surfaces
> static bool meshGenerator(GFace *gf, int RECUR_ITER,
> bool repairSelfIntersecting1dMesh,
> bool debug = true)
> .
> .
> .
> Msg::Debug("Meshing of the convex hull (%d points)", points.size());
> doc.MakeMeshWithPoints();
> Msg::Debug("Meshing of the convex hull (%d points) done", points.size());
>
> //// CRASHES IN THIS LOOP
> for(int i = 0; i < doc.numTriangles; i++) {
> BDS_Point *p1 = (BDS_Point*)doc.points[doc.triangles[i].a].data;
> BDS_Point *p2 = (BDS_Point*)doc.points[doc.triangles[i].b].data;
> BDS_Point *p3 = (BDS_Point*)doc.points[doc.triangles[i].c].data;
> m->add_triangle(p1->iD, p2->iD, p3->iD);
> }
> .
> .
> .
> ====================================================
>