yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #13014
[Bug 1666339] Re: DFNflow crashes for compiled trunk but not non-optimized debug compiled trunk
Hi Robert,
I was about to commit your fix, then I had another another guess.
Could you remove the pass-by-reference for the facet circulator in the function's signature?
void DFNFlowEngine::trickPermeability(RTriangulation::Facet_circulator facet, ...)
instead of
void DFNFlowEngine::trickPermeability(RTriangulation::Facet_circulator& facet, ...)
If it works I'll go for this second option since it looks a bit less
magic (I can admit that circulators involve some in-place data which is
lost when passed by reference, although I can't imagine how exactly).
Bruno
** Changed in: yade
Status: New => Fix Committed
--
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:
Fix Committed
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