← Back to team overview

yade-dev team mailing list archive

Re: [Bug 1666339] Re: DFNflow crashes for compiled trunk but not non-optimized debug compiled trunk

 

On 02/23/2017 11:24 PM, Robert Caulk wrote:
> 195: RTriangulation::Facet_circulator facet1 =
> Tri.incident_facets(*edge);
>
> This is where I believe there may be a problem. facet1 does not appear
> to be the address of a facet, instead it appears to be the circulator.
The "circulator" is just an iterator (i.e. a pointer) which cyclically 
goes back to the same point.
So, "facet->first" is ok.
If "facet" was really a facet (not a circulator) it would be "facet.first".

> Am I right to say that in this case *facet1 is the facet that we are
> interested in using [1]? If so, we should be able to change lines 174
> and 175 to:
>
> const CellHandle& cell1 = *facet->first;
> const CellHandle& cell2 = *facet->first->neighbor(*facet->second);
>
> But of course, the compiler says this is an invalid initialization of
> reference.
If your idea was correct the current code would not work at all, you 
need to include in the picture the fact that this same code actually 
works for us without problem.
So it is more a matter of finding which special case makes the problem 
appear, keeping in mind that it usually works.
You are maybe not far: what happens if during the circulation about one 
edge we find a facet incident to the infinite vertex, for instance? 
There can be special cases of this sort.

Could you output more data on the crashing facet? Which are the vertices 
connected to it, etc. It may ring a bell about which special case need 
to be handled differently.


Bruno

-- 
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/1666339

Title:
  DFNflow crashes for compiled trunk but not non-optimized debug
  compiled trunk

Status in Yade:
  New

Bug description:
  Distro: Xenial 16.04LTS
  Yade Version: yade-2017-0207.git-11c276f
  Compilation: default compilation with debug flags and '#define DFNFLOW' uncommented in DFNFlow.cpp

  
  Summary:

  DFNFlowEngine crashes for compiled yade-2017-0207.git-11c276f sources.
  The segmentation fault also occurs for a debug compiled version and
  yields the attached core dump. Interestingly, the DFNFlowEngine does
  not crash for a non-optimized debug compilation of the same sources.

  
  Description of failure:

  According to the core dump, the failure can be traced back to
  DFNFlow.cpp:176, where it is checking if the cell is inifinite
  (although I have also had it fail at the permeability assignment
  directly below line 176 for a modified version of DFNflow.cpp).

   DFNFlow.cpp:

   176: if ( Tri.is_infinite(cell1) || Tri.is_infinite(cell2)) cerr<<"Infinite cell found in    trickPermeability, should be handled somehow, maybe"<<endl;
   177:	cell1->info().kNorm()[facet->second]=cell2->info().kNorm()[Tri.mirror_index(cell1, facet- >second)] = pow((aperture+residualAperture),3)/(12*viscosity);

  I am unsure why this line is causing a crash in the optimized-debug
  compiled code, but not the non-optimized-debug compiled code.

  My optimized-debug compiled executable is simply built with the flag
  -DDEBUG=ON. My non-optimized debug compiled code uses an edited
  CMakeLists.txt to avoid optimization:

  IF(CMAKE_COMPILER_IS_GNUCC)
    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
  ENDIF(CMAKE_COMPILER_IS_GNUCC)

  The attached zip contains:
    mwe.py  // input script 
    liteSpecimen2mm.spheres  // packing file
    jointSurf.stl  // stl for smooth joint
    coreDump2.txt  // core dump after executing mwe.py with optimized debug compiled yade

  Any assistance with this bug is greatly appreciated.

To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/1666339/+subscriptions


References