Dear all,<br><br>I have developped a program with use of VTK 5.10 C++ to perform velocity vector requests in a CFD data file.<br>I use vtkCellLocator class with method FindCell to identify in which cell I make my requests.<br>
So far, I have had no problem.<br>I encounter a first crash with a large input data set (5Go) (Linux 64bits with 32Go RAM)<br>The data I use to create is an ensight binary gold file that contains a hexamesh.<br>The crash occurs on a call to FindCell of vtkCellLocator class.<br>
The method FindCell produces a segmentation fault for one specific request.<br>The only information about this request I have is that the function crashes for a point close to the bounding box (close to and inside the bounding box).<br>
I filter my inputs with a bounding box test to ensure that my requests are located in the bounding box of my data set.<br>My function that calls FindCell is given at the end of this post.<br><br>I manage to compile the program with a debug version, however I didn't compile VTK in Debug mode<br>
Here is the gdb log I have<br>Program received signal SIGSEGV, Segmentation fault.<br>0x00002aaab15d44a8 in vtkAbstractCellLocator::FindCell (this=0x10f1050, x=0x7fffffff6790) at /softs/applis_src/VTK/VTK-5.10.0/Filtering/vtkAbstractCellLocator.cxx:183<br>
183 }<br>(gdb) bt<br>#0 0x00002aaab15d44a8 in vtkAbstractCellLocator::FindCell (this=0x10f1050, x=0x7fffffff6790) at /softs/applis_src/VTK/VTK-5.10.0/Filtering/vtkAbstractCellLocator.cxx:183<br>#1 0x3fa90f6b63a3ff81 in ?? ()<br>
#2 0x00007fffffff6790 in ?? ()<br>#3 0x00000000010f1050 in ?? ()<br>#4 0x00007fffffff67e8 in ?? ()<br>#5 0x00002aaaae5359d8 in findPointLocationFromAVectorOfCellLocator(std::vector<vtkSmartPointer<vtkCellLocator>, std::allocator<vtkSmartPointer<vtkCellLocator> > > const&, double const*, lo ng long&, long long&) () from /home/etudes/simulator/binCmake/bin_Linux64/Release/libtoolsVtkInterfaceCPP.so<br>
<br>On the same dataset, I can also use vtkCellLocatorInterpolatedVelocityField, to perform my work.<br>With this class, I have reported no crash. However, I am not sure it makes the same point requests...<br><br>Do you have any advise?<br>
Compile VTK in Debug mode, to trace back the problem?<br>Any other solution?<br><br>Best regards,<br>Guillaume Jacquenot.<br><br>/**<br>Â * \brief returns the block id and cell id of an input point to locate in a vector of vtkCellLocator<br>
 * \param[in] vectCellLocator Std vector of a cell locator<br> * \param[in] pointToLocate Point to locate<br> * \param[out] idCellLocator Id of the block containing the input point<br> * \param[out] idCell Id of the cell containing the input point<br>
 * \return    hasCellBeenFound Boolean indicating that the cell has been found<br> */<br>bool findPointLocationFromAVectorOfCellLocator(<br>       const vtkstd::vector<vtkSmartPointer<vtkCellLocator> > & vectCellLocator,<br>
       const double pointToLocate[3],<br>       vtkIdType& idCellLocator,<br>       vtkIdType& idCell)<br>{<br>   bool hasCellBeenFound = false;<br>   const int nVector = (int)(vectCellLocator.size());<br>   idCellLocator = 0;<br>
   idCell = 0;<br>   while ((hasCellBeenFound==false)&&(idCellLocator<nVector))<br>   {<br>       idCell = vectCellLocator.at(idCellLocator)->FindCell(pointToLocate);<br>       if (idCell!=-1)<br>       {<br>
           hasCellBeenFound = true;<br>       }<br>       else<br>       {<br>           idCellLocator++;<br>       }<br>   }<br>   return hasCellBeenFound;<br>}<br><br><br>