The link to the meshfile does not work. Can you provide a mesh again?
There's a conversion from size_t to uint in [1], which could overflow
if you have 16-bit uint. What's the output of
//----------------------------------------------------
echo "#include <limits>
#include <iostream>
int main() {
std::cout << std::numeric_limits<unsigned int>::max() << std::endl;
return 0;
}
" | c++ -std=c++11 -xc++ - && ./a.out
//----------------------------------------------------
[1]
https://bitbucket.org/fenics-project/dolfin/src/8ad7544e62714eaf561e52880925d3713756f3c0/dolfin/geometry/GenericBoundingBoxTree.cpp?at=master&fileviewer=file-view-default#GenericBoundingBoxTree.cpp-93
Jan
On Sat, 24 Oct 2015 20:13:41 -0400
Paolo Di Achille <[email protected]> wrote:
> 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