[Gmsh] Segmentation fault meshing over 100 million element

Andre Nicolle andre at cfdandip.co.uk
Thu Jan 12 09:35:36 CET 2012


Hi all,

The follow-up on this has been quite slow due to a server room upgrade 
but I have managed to rerun the problem again with the latest version of 
Netgen thanks to Christophe. These runs take three or four days so are 
quite slow especially with slow cpu's.

The memory error seems to have re-occurred in a different section of 
code. I attach the gdb output for the following command.

gmsh box3d.geo -3 -bin -algo front3d -optimize_netgen -smooth 5 -clscale 
1.0 -rand 1.e-8 -o box_c_gmsh_svn.msh

Additionally I have also run with Delaunay instead of  frontal to see if 
this is different. The output is below as well for this command.

  gmsh box3d.geo -3 -bin -optimize_netgen -smooth 5 -clscale 1.0 -rand 
1.e-8 -o box_c_gmsh_svn.msh

It seems both methods of meshing have different errors when meshing 
large meshes. It seems from the gdb output the error occurs when 
allocating more memory.  However I also monitored the memory usage which 
did not exceed 27% of the server unit therefore I imagine something 
tried to allocate more than the system has in one go, possibly due to 
faulty allocation request .  I find the value s=18446744072204065817 
being passed to DynamicMem a little suspicious.

Could somebody suggest the best way forward as we are very keen to 
overcome this problem.

Thanks

Andre

On 20/12/2011 20:36, Christophe Geuzaine wrote:
> On 20 Dec 2011, at 09:40, Andre Nicolle wrote:
>
>> Hi Christophe
>>
>> Thanks for the update, have recompiled and awaiting the output. Will update shortly.
>>
>> It would be great to hear of anyone who has achieved meshes larger than 80 million elements. We are currently looking to find a limit for some very large CFD calculations.
>>
> PS : have you tried the Delaunay algorithm?
>
>> Regards
>>
>> Andre
>>
>> On 20/12/2011 00:32, Christophe Geuzaine wrote:
>>> Hi Andre,
>>>
>>> Can you try recompiling? I have updated the version of Netgen used in Gmsh to the latest SVN.
>>>
>>> Thanks,
>>>
>>> Christophe
>>>
>>>
>>> On 16 Dec 2011, at 11:33, Andre Nicolle wrote:
>>>
>>>> Hi all,
>>>>
>>>> I have been using Gmsh for many years and found it to be a great program. We are now expanding our calculations and now require bigger meshes but have started to find this to be a problem when meshing (using netgen) larger than 100 million elements. Our system has adequate RAM (256Gb) but gmsh exits with a segmentation fault, as shown below. At present we are using Ubuntu 10.04 64Bit AMD 6100. The problem can be found with 2.42, 2.5 and svn revision 10744 versions of the code. Interestingly for some reason the latest version of Gmsh crashes considerably sooner than the older versions.
>>>>
>>>> Gmsh 2.50 and repository version were compiled using gcc version 4.4.3, Atlas Blas with the following command:
>>>> cmake ../CMakeLists.txt -DENABLE_FLTK=0
>>>>
>>>> 2.42 was from ubuntu repository
>>>>
>>>> The meshing command is:
>>>>
>>>> gmsh box3d.geo -3 -bin -algo front3d -optimize_netgen -smooth 5 -clscale 1.0 -rand 1.e-8 -o box_c_new.msh
>>>>
>>>> The box3d.geo file is very simple box with resolutions (0.002) set on the points as can be seen below .
>>>>
>>>> To help find the problem I have tried to recompile Gmsh with debugging on. I'm not sure which flags got set.
>>>>
>>>> cmake ../CMakeLists.txt -DENABLE_FLTK=0 -DCMAKE_BUILD_TYPE=Debug
>>>>
>>>> and rerun Gmsh using gdb, output below:
>>>>
>>>> The error seems to be generated in Netgen moveablemem.cpp which has disappeared in the latest version of Netgen 4.9 anyway. Given that Gmsh is still using Netgen 4.5, is it possible to link to the later version of netgen library installed locally instead of the built-in version to see if this helps.
>>>>
>>>> Thanks
>>>>
>>>> Andre
>>>>
>>>> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
>>>>
>>>> RES = 0.002;
>>>> Point(1) = {0, 0, 0, RES};
>>>> Point(2) = {1, 0, 0, RES};
>>>> Point(3) = {1, 0, 1, RES};
>>>> Point(4) = {0, 0, 1, RES};
>>>> Point(5) = {0, 1, 0, RES};
>>>> Point(6) = {1, 1, 0, RES};
>>>> Point(7) = {1, 1, 1, RES};
>>>> Point(8) = {0, 1, 1, RES};
>>>> Line (1) = {1, 2};
>>>> Line (2) = {2, 3};
>>>> Line (3) = {3, 4};
>>>> Line (4) = {4, 1};
>>>> Line (5) = {1, 5};
>>>> Line (6) = {5, 6};
>>>> Line (7) = {6, 2};
>>>> Line (8) = {5, 8};
>>>> Line (9) = {8, 4};
>>>> Line (10) = {8, 7};
>>>> Line (11) = {7, 6};
>>>> Line (12) = {7, 3};
>>>> Line Loop (15) = {1, 2, 3, 4};
>>>> Plane Surface (16) = {15};
>>>> Line Loop (17) = {12, -2, -7, -11};
>>>> Plane Surface (18) = {17};
>>>> Line Loop (19) = {3, -9, 10, 12};
>>>> Plane Surface (20) = {19};
>>>> Line Loop (21) = {10, 11, -6, 8};
>>>> Plane Surface (22) = {21};
>>>> Line Loop (23) = {8, 9, 4, 5};
>>>> Plane Surface (24) = {23};
>>>> Line Loop (25) = {6, 7, -1, 5};
>>>> Plane Surface (26) = {25};
>>>> Surface Loop(27) = {20, 16, 26, 22, 18, 24};
>>>> Volume(28) = {27};
>>>>
>>>> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>>>>
>>>> Info    : Started on Thu Dec 15 20:45:53 2011
>>>> Info    : Reading 'box3d.geo'...
>>>> Info    : Done reading 'box3d.geo'
>>>> Info    : Meshing 1D...
>>>> Info    : Meshing curve 1 (Line)
>>>> Info    : Meshing curve 2 (Line)
>>>> Info    : Meshing curve 3 (Line)
>>>> Info    : Meshing curve 4 (Line)
>>>> Info    : Meshing curve 5 (Line)
>>>> Info    : Meshing curve 6 (Line)
>>>> Info    : Meshing curve 7 (Line)
>>>> Info    : Meshing curve 8 (Line)
>>>> Info    : Meshing curve 9 (Line)
>>>> Info    : Meshing curve 10 (Line)
>>>> Info    : Meshing curve 11 (Line)
>>>> Info    : Meshing curve 12 (Line)
>>>> Info    : Done meshing 1D (0.01 s)
>>>> Info    : Meshing 2D...
>>>> Info    : Meshing surface 16 (Plane, Delaunay)
>>>> Info    : Meshing surface 18 (Plane, Delaunay)
>>>> Info    : Meshing surface 20 (Plane, Delaunay)
>>>> Info    : Meshing surface 22 (Plane, Delaunay)
>>>> Info    : Meshing surface 24 (Plane, Delaunay)
>>>> Info    : Meshing surface 26 (Plane, Delaunay)
>>>> Info    : Done meshing 2D (603.87 s)
>>>> Info    : Meshing 3D...
>>>> Info    : Meshing volume 28 (Frontal)
>>>> Info    : Region 28 Face 20, 0 intersect
>>>> Info    : Region 28 Face 16, 1 intersect
>>>> Info    : Region 28 Face 26, 1 intersect
>>>> Info    : Region 28 Face 22, 1 intersect
>>>> Info    : Region 28 Face 18, 1 intersect
>>>> Info    : Region 28 Face 24, 1 intersect
>>>> Info    : CalcLocalH: 1984450 Points 0 Elements 3968896 Surface Elements
>>>> Info    : Check subdomain 1 / 1
>>>> Info    : 3968896 open elements
>>>> Info    : Meshing subdomain 1 of 1
>>>> Info    : 3968896 open elements
>>>> Info    : Use internal rules
>>>> Info    : 3968896 open elements
>>>> Info    : Delaunay meshing
>>>> Info    : number of points: 1984450
>>>> Info    : blockfill local h
>>>> Info    : number of points: 44035686
>>>>
>>>> Program received signal SIGSEGV, Segmentation fault.
>>>> 0x00007ffff577b1c3 in ?? () from /lib/libc.so.6
>>>> (gdb) where
>>>> #0  0x00007ffff577b1c3 in ?? () from /lib/libc.so.6
>>>> #1  0x00007ffff577ee83 in free () from /lib/libc.so.6
>>>> #2  0x0000000000f9c2cf in netgen::BaseMoveableMem::ReAlloc (
>>>>     this=0x7fffffffb3b8, s=12612)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/general/moveablemem.cpp:159
>>>> #3  0x0000000000f950e7 in netgen::MoveableMem<netgen::INDEX_3>::ReAlloc (
>>>>     this=0x7fffffffb3b8, s=1051)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/include/../general/moveablemem.hpp:63
>>>> #4  0x0000000000f94f2f in netgen::MoveableArray<netgen::INDEX_3, 0>::SetSize (
>>>>     this=0x7fffffffb3b0, nsize=1051)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/include/../general/array.hpp:447
>>>> #5  0x0000000000f945c2 in netgen::BASE_INDEX_3_CLOSED_HASHTABLE::BaseSetSize (
>>>>     this=0x7fffffffb3b0, size=1051)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/general/hashtabl.cpp:294
>>>> #6  0x000000000105a6ba in netgen::INDEX_3_CLOSED_HASHTABLE<int>::SetSize (
>>>>     this=0x7fffffffb3b0, size=1051)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/include/../general/hashtabl.hpp:870
>>>> #7  0x000000000105a4ae in netgen::MeshNB::ResetFaceHT (this=0x7fffffffb3b0,
>>>>     size=1051)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/meshing/delaunay.cpp:144
>>>> #8  0x0000000001053a54 in netgen::AddDelaunayPoint (newpi=..., newp=...,
>>>>     tempels=..., mesh=..., tettree=..., meshnb=..., centers=..., radi2=...,
>>>>     connected=..., treesearch=..., freelist=..., list=..., insphere=...,
>>>>     closesphere=...)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/meshing/delaunay.cpp:496
>>>> #9  0x0000000001055625 in netgen::Delaunay1 (mesh=..., mp=...,
>>>>     adfront=0x205a4d90, tempels=..., oldnp=1984450, startel=..., pmin=...,
>>>>     pmax=...)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/meshing/delaunay.cpp:765
>>>> #10 0x0000000001055d9f in netgen::Meshing3::Delaunay (this=0x7fffffffd3f0,
>>>>     mesh=..., domainnr=1, mp=...)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/meshing/delaunay.cpp:816
>>>> #11 0x000000000106555b in netgen::MeshVolume (mp=..., mesh3d=...)
>>>>     at /home/andre/gmsh/svn/gmsh/contrib/Netgen/libsrc/meshing/meshfunc.cpp:192
>>>> #12 0x0000000000f92263 in nglib::NgAddOn_GenerateVolumeMesh (mesh=0x2078cdc0,
>>>>     maxh=1e+22) at /home/andre/gmsh/svn/gmsh/contrib/Netgen/nglib_addon.cpp:80
>>>> #13 0x0000000000b2a33e in meshGRegion::operator() (this=0x7fffffffe240,
>>>>     gr=0x1844820) at /home/andre/gmsh/svn/gmsh/Mesh/meshGRegion.cpp:883
>>>> #14 0x0000000000a79d90 in std::for_each<std::_Rb_tree_const_iterator<GRegion*>,
>>>>     at /usr/include/c++/4.4/bits/stl_algo.h:4200
>>>> #15 0x0000000000a7768c in Mesh3D (m=0x1833a20)
>>>>     at /home/andre/gmsh/svn/gmsh/Mesh/Generator.cpp:533
>>>> #16 0x0000000000a77c0d in GenerateMesh (m=0x1833a20, ask=3)
>>>>     at /home/andre/gmsh/svn/gmsh/Mesh/Generator.cpp:636
>>>> #17 0x000000000093e1b4 in GModel::mesh (this=0x1833a20, dimension=3)
>>>>     at /home/andre/gmsh/svn/gmsh/Geo/GModel.cpp:510
>>>> #18 0x00000000007c4c75 in GmshBatch ()
>>>>     at /home/andre/gmsh/svn/gmsh/Common/Gmsh.cpp:170
>>>> #19 0x00000000007c42e3 in main (argc=15, argv=0x7fffffffe5d8)
>>>>     at /home/andre/gmsh/svn/gmsh/Common/Main.cpp:27
>>>>
>>>> _______________________________________________
>>>> gmsh mailing list
>>>> gmsh at geuz.org
>>>> http://www.geuz.org/mailman/listinfo/gmsh

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: gdb_output.txt
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20120112/4ea556c5/attachment.txt>