CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Meshing & Mesh Conversion

[Technical] Segmentation fault in map

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   November 27, 2007, 16:06
Default Segmentation fault in map
  #1
msg30
Guest
 
Posts: n/a
Hi!

Has anybody seen this before:

Mapping field (internal) U_0 (ok!)
Mapping field (patch) U_0
#0 Foam::error::printStack(Foam:stream&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/OSspecific/Unix/printStack.C:203
#1 Foam::sigSegv::sigSegvHandler(int) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/OSspecific/Unix/signals/sigSegv.C:59
#2 ?? in "/lib64/libc.so.6"
#3 Foam::Field<foam::vector<double> >::map(Foam::UList<foam::vector<double> > const&, Foam::List<foam::list<int> > const&, Foam::List<foam::list<double> > const&) in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/ftLMPs"
#4 Foam::Field<foam::vector<double> >::autoMap(Foam::FieldMapper const&) in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/ftLMPs"
#5 Foam::pressureInletOutletVelocityFvPatchVectorFiel d::autoMap(Foam::fvPatchFieldM apper const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/fields/fvPatchFields/derived/pressure InletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.C:15 2
#6 void Foam::MapGeometricFields<foam::vector<double>, Foam::fvPatchField, Foam::fvMeshMapper, Foam::volMesh>(Foam::fvMeshMapper const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/lnInclude/MapGeometricFields.H:122
#7 Foam::fvMesh::mapFields(Foam::mapPolyMesh const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/fvMesh/fvMesh.C:371
#8 Foam::fvMesh::updateMesh(Foam::mapPolyMesh const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/fvMesh/fvMesh.C:443
#9 Foam::polyTopoChanger::changeMesh(bool, bool) at ~/OpenFOAM/OpenFOAM-1.4.1/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTop oChanger.C:283
#10 Foam::movingConeTopoFvMesh::update() at ~/OpenFOAM/OpenFOAM-1.4.1/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeT opoFvMesh.C:369
#11 main in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/ftLMPs"
#12 __libc_start_main in "/lib64/libc.so.6"
#13 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in


The first two lines are of course my debugging statements in the code, trying to figure out what is going on. When mapping the first vector object it segFaults.

I cannot get deeper into the code for some reason, as you can see,

pressureInletOutletVelocityFvPatchVectorField.C:15 2

is the last source code reference. I tried to switch everything to debug, but I seem to have missed the files responsible for this particular autoMap and map.

Does anybody have any idea how to get closer to the problem? Any hint greatly appreciated!!

Regards,


Markus
  Reply With Quote

Old   November 27, 2007, 16:23
Default Yes, this file is full of such
  #2
Senior Member
 
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,905
Rep Power: 33
hjasak will become famous soon enough
Yes, this file is full of such disgraceful bugs that I am ashamed to see it in OpenFOAM. Have a look at the check-in:

pressureInletOutletVelocityFvPatchVectorField.C

I do apologise for the inconvenience,

Hrv
__________________
Hrvoje Jasak
Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk
hjasak is offline   Reply With Quote

Old   November 30, 2007, 11:29
Default Dear Hrv, Many thanks for t
  #3
msg30
Guest
 
Posts: n/a
Dear Hrv,

Many thanks for the additional info. That one seems to be cleared away now and my understanding slowly increases. I have to learn some of the C++ features at the same time, which slows me down a little but should be okay. I come form a fortran HPC background, things are bit clearer there.

My current (and stubborn) problem is:

The mapping of the first surface vector field as follows:

Map all the vector surfaceFields in the objectRegistry
Mapping field (internal) S
#0 Foam::error::printStack(Foam:stream&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/OSspecific/Unix/printStack.C:203
#1 Foam::sigSegv::sigSegvHandler(int) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/OSspecific/Unix/signals/sigSegv.C:59
#2 ?? in "/lib64/libc.so.6"
#3 Foam::Field<foam::vector<double> >::Field(Foam::Field<foam::vector<double> > const&) in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/simpleFOA M"
#4 Foam::Field<foam::vector<double> >::autoMap(Foam::FieldMapper const&) in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/simpleFOA M"
#5 Foam::MapInternalField<foam::vector<double>, Foam::fvMeshMapper, Foam::surfaceMesh>::operator()(Foam::Field<foam::v ector<double> >&, Foam::fvMeshMapper const&) const at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/lnInclude/MapFvSurfaceField.H:88
#6 void Foam::MapGeometricFields<foam::vector<double>, Foam::fvsPatchField, Foam::fvMeshMapper, Foam::surfaceMesh>(Foam::fvMeshMapper const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/OpenFOAM/lnInclude/MapGeometricFields.H:119
#7 Foam::fvMesh::mapFields(Foam::mapPolyMesh const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/fvMesh/fvMesh.C:379
#8 Foam::fvMesh::updateMesh(Foam::mapPolyMesh const&) at ~/OpenFOAM/OpenFOAM-1.4.1/src/finiteVolume/fvMesh/fvMesh.C:443
#9 Foam::polyTopoChanger::changeMesh(bool, bool) at ~/OpenFOAM/OpenFOAM-1.4.1/src/dynamicMesh/polyTopoChange/polyTopoChanger/polyTop oChanger.C:283
#10 Foam::movingConeTopoFvMesh::update() at ~/OpenFOAM/OpenFOAM-1.4.1/src/topoChangerFvMesh/movingConeTopoFvMesh/movingConeT opoFvMesh.C:369
#11 main in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/simpleFOA M"
#12 __libc_start_main in "/lib64/libc.so.6"
#13 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/markus/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/simpleFOA M"
Segmentation fault

It seems to be mesh dependent as well, I created a smaller mesh with only 8 cells and it does not segFault, on the mesh from the dam breaking tutorial it falls over .... may of course be as well the signature of working with uninitialized memory and writing to undefined locations - with more cells more chance of it going wrong - , as you said.

Tried to look at the constructors but did not spot similar problems as in the last post, but I may be still looking at the wrong place.

Will continue to investigate.

Many thanks for your time and help!

Regards,

Markus
  Reply With Quote

Old   March 26, 2008, 07:16
Default Hi Markus, I was wondering
  #4
Member
 
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 17
Erik is on a distinguished road
Hi Markus,

I was wondering if you managed to resolve this issue? Since I got a similar error message when trying to run a slightly modified version of icoFoam (lambdaMicroIcoFoam) with some boundary conditions that I implemented and does not come with the standard OF package.

My error output looks like:
Starting time loop

Time = 0.005
Courant Number mean: 1e-06 max: 1e-06
#0 Foam::error::printStack(Foam:stream&) in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigSegv::sigSegvHandler(int) in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 ?? in "/lib64/libc.so.6"
#3 Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*<foam::vector<double> >(Foam::UList<double> const&, Foam::UList<foam::vector<double> > const&) in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
#4 Foam::mixedFixedValueSlipFvPatchField<foam::vector <double> >::snGrad() const in "/home/erik/OpenFOAM/erik-1.4.1/lib/linux64GccDPOpt/liblambdaMicroIcoFoam.so"
#5 Foam::transformFvPatchField<foam::vector<double> >::gradientBoundaryCoeffs() const in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libfiniteVolume.so"
#6 Foam::fv::gaussLaplacianScheme<foam::vector<double > >::fvmLaplacianUncorrected(Foam::GeometricField<do uble,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libfiniteVolume.so"
#7 Foam::fv::gaussLaplacianScheme<foam::vector<double > >::fvmLaplacian(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libfiniteVolume.so"
#8 Foam::fv::laplacianScheme<foam::vector<double> >::fvmLaplacian(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/erik/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libfiniteVolume.so"
#9 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::laplacian<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&, Foam::word const&) in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
#10 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::laplacian<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
#11 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::laplacian<foam::vector<double> >(Foam::tmp<foam::geometricfield<double,> > const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
#12 main in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
#13 __libc_start_main in "/lib64/libc.so.6"
#14 Foam::regIOobject::readIfModified() in "/home/erik/OpenFOAM/erik-1.4.1/applications/bin/linux64GccDPOpt/lambdaMicroIcoF oam"
Segmentation fault

I have read on this forum that this error might be connected the geometry and mesh you use. I Haven't managed to get rid of the error messages by such methods though.

I have also read that similar error-messages may occur if there is a division by zero somewhere. So I tried to set the initial conditions to non-zero values. But it wont shake the errors.

If someone knows what the error message means or how to get by it I'd be happy to be enlightened by any information!

Cheers
Erik
Erik is offline   Reply With Quote

Old   March 26, 2008, 09:33
Default Hi Erik! Is it possible to
  #5
Assistant Moderator
 
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51
gschaider will become famous soon enoughgschaider will become famous soon enough
Hi Erik!

Is it possible to run your case with a vanilla-iceFoam and if "yes" does the same error occur?

Anyway. As soon as you start developing your own stuff it is very handy if you have a version of OF with debugging enabled. Amongst other things it will give you exact line numbers in the stack trace. Plus it tells you if your code has an "index out of bounds"-problem (which is one of the possible causes for segmentation faults)

Bernhard
__________________
Note: I don't use "Friend"-feature on this forum out of principle. Ah. And by the way: I'm not on Facebook either. So don't be offended if I don't accept your invitation/friend request
gschaider is offline   Reply With Quote

Old   March 27, 2008, 10:15
Default sorry, "volMesh" was missing i
  #6
Member
 
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 17
Erik is on a distinguished road
sorry, "volMesh" was missing in the post above at the lines involving how Uwall is initialised should be:

maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatc hVectorField
(
const fvPatch& p,
const DimensionedField<vector,volmesh>& iF
)
:
mixedFixedValueSlipFvPatchVectorField(p, iF),
accommodationCoeff_(1.0),
Uwall_(p.size(), vector(0.0, 0.0, 0.0)),
A1_(1.0)
{}

cheers
Erik is offline   Reply With Quote

Old   March 27, 2008, 10:49
Default Sorry Eric! No idea what co
  #7
Assistant Moderator
 
Bernhard Gschaider
Join Date: Mar 2009
Posts: 4,225
Rep Power: 51
gschaider will become famous soon enoughgschaider will become famous soon enough
Sorry Eric!

No idea what could be the cause. Obviously the size of the refValue is not correctly initialized (that belongs to the mixedPatch-class, doesn't it?). should be equal to the amount of faces in the patch.

Sprinkle your boundary class with Info<< and try to find out where it went wrong (that's what I always do)

Bernhard
__________________
Note: I don't use "Friend"-feature on this forum out of principle. Ah. And by the way: I'm not on Facebook either. So don't be offended if I don't accept your invitation/friend request
gschaider is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
CFD post cannot load results-Error appeared? mariam.sara ANSYS 9 September 17, 2018 15:23
Segmentation fault in SU2 V5.0 ygd SU2 2 March 1, 2017 04:38
[mesh manipulation] Importing Multiple Meshes thomasnwalshiii OpenFOAM Meshing & Mesh Conversion 18 December 19, 2015 18:57
Segmentation fault when running in parallel Pj. OpenFOAM Running, Solving & CFD 3 April 8, 2015 08:12
segmentation fault when installing OF-2.1.1 on a cluster Rebecca513 OpenFOAM Installation 9 July 31, 2012 15:06


All times are GMT -4. The time now is 19:28.