Jan,
Thanks very much for the suggestions. I used the debugger using your
instructions and below you can find the first five frames of the backtrace
#0 0x00002aaabb908d34 in
dolfin::BoundingBoxTree3D::less_z_bbox::operator()(unsigned int, unsigned
int) ()
at /home/fas/pd/src/dolfin-1.6.0/dolfin/geometry/BoundingBoxTree3D.h:76
#1 0x00002aaabb90f38a in __gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >
std::__unguarded_partition<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >, unsigned int,
dolfin::BoundingBoxTree3D::less_z_bbox>(__gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >, unsigned int const&,
dolfin::BoundingBoxTree3D::less_z_bbox) ()
at /gpfs/apps/hpc/Langs/GCC/4.8.2/include/c++/4.8.2/bits/stl_algo.h:2263
#2 0x00002aaabb90c89d in __gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >
std::__unguarded_partition_pivot<__gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
dolfin::BoundingBoxTree3D::less_z_bbox>(__gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >, dolfin::BoundingBoxTree3D::less_z_bbox) ()
at /gpfs/apps/hpc/Langs/GCC/4.8.2/include/c++/4.8.2/bits/stl_algo.h:2296
#3 0x00002aaabb90afc8 in void
std::__introselect<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >, long,
dolfin::BoundingBoxTree3D::less_z_bbox>(__gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >, __gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >, long,
dolfin::BoundingBoxTree3D::less_z_bbox) ()
at /gpfs/apps/hpc/Langs/GCC/4.8.2/include/c++/4.8.2/bits/stl_algo.h:2394
#4 0x00002aaabb90a326 in void
std::nth_element<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >,
dolfin::BoundingBoxTree3D::less_z_bbox>(__gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > >, __gnu_cxx::__normal_iterator<unsigned
int*, std::vector<unsigned int, std::allocator<unsigned int> > >,
dolfin::BoundingBoxTree3D::less_z_bbox) ()
at /gpfs/apps/hpc/Langs/GCC/4.8.2/include/c++/4.8.2/bits/stl_algo.h:5417
#5 0x00002aaabb909bb2 in dolfin::BoundingBoxTree3D::sort_bboxes(unsigned
long, std::vector<double, std::allocator<double> > const&,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > > const&,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > > const&,
__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int,
std::allocator<unsigned int> > > const&) () at
/home/fas/pd/src/dolfin-1.6.0/dolfin/geometry/BoundingBoxTree3D.h:249
The segfault seems to arise at line 76 as reported below, inside struct
less_z_bbox of BoundingBoxTree3D.h
| 72 inline bool operator()(unsigned int i, unsigned int
j)
| 73
{
| 74 const double* bi = bboxes.data() +
6*i;
| 75 const double* bj = bboxes.data() +
6*j;
| 76 return bi[2] + bi[5] < bj[2] +
bj[5];
| 77 }
when the integer 'i' gets a much larger value than it gets in many
previous successful calls. Also, I was not able to reproduce the
segmentation fault with smaller mesh files, but the error consistently
occurs for relatively large meshes (~500 000 elements), like the one I
uploaded at this link:
https://yale.box.com/s/yyls3w8j2j7refryywy9yj79pvalhjyd
Please let me know if I can any provide further information, and again
thanks very much!
Best,
Paolo
On Sat, Oct 24, 2015 at 12:49 PM, Jan Blechta <[email protected]>
wrote:
> You can try debugger
>
> gdb -ex r -args python script.py
> <program terminates with segfault>
> (GDB) bt
> <stack trace>
> (GDB) f <suspicious_frame>
> (GDB) w
> <code in question>
> (GDB) p <suspicious_pointer>
>
> Can you also provide us the mesh?
>
> Jan
>
>
> On Sat, 24 Oct 2015 11:24:23 -0400
> Paolo Di Achille <[email protected]> wrote:
>
> > Dear FEniCS users and developers,
> >
> > I don't seem to be able to build the BoundingBoxTree of a correctly
> > loaded mesh using a recent installation from source of FEniCS 1.6.0
> > on a local cluster. The following minimal code results in a segfault
> > error
> >
> > >>> from dolfin import *
> > >>> mm = Mesh('mesh.xml')
> > >>> mm.bounding_box_tree().build(mm)
> >
> > Surprisingly, I can use with no apparent issues other features that
> > do not explicitly require building a tree (e.g. solving a problem in
> > parallel, I/O of XDMF files), but the software fails, probably for
> > the same reason, when I need to evaluate a function at a point of
> > given coordinates. Likely, I must have missed some installation
> > requirements and any pointers or suggestions would be highly
> > appreciated.
> >
> > My current installation of FEniCS was built against OpenMPI-1.8.1,
> > Python-2.7.6, Swig-3.0.7, Boost-1.59.0, HDF5-1.8.10, VTK-5.10.1,
> > Scotch-6.0.4, Petsc-3.6.2 using GCC-4.8.2 and Cmake-3.3.2. Also no
> > error was output during compilation and linking.
> >
> > Thanks very much! Best,
> > Paolo
>
>
_______________________________________________
fenics-support mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics-support