Possible uninitialized memory access
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
Reported by Mattijs Janssens m.janssens@opencfd.co.uk
Just something I noticed.
Our reader module (for OpenFOAM) installs a malloc routine (through __malloc_hook) which initialises all memory to NaN. It also sets floating point trapping (FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW). We use this as a simple way of catching uninitialised data.
I've noticed that I get a floating point exception when I do a cell (or point) selection i.e. it seems to use uninitialised data. If I switch off the exception handling it works just fine.
I attach a traceback of the error. Lines 0..2 are from our exception trapping routine. Last vtk/paraview routine is #3, SetFrustum.
Kind regards,
Mattijs
#0 Foam::error::printStack(Foam::Ostream&) in "/home/hunt2/mattijs/OpenFOAM/OpenFOAM-1.4.2/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/hunt2/mattijs/OpenFOAM/OpenFOAM-1.4.2/lib/linux64GccDPOpt/libOpenFOAM.so" #2 Uninterpreted: /lib64/libpthread.so.0 [0x2b7542bc4130] in "/lib64/libpthread.so.0" #3 vtkSelectionSource::SetFrustum(double*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkGraphics.so.pv3.2" #4 vtkSelectionSourceCommand(vtkClientServerInterpreter*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&) #5 vtkClientServerInterpreter::ProcessCommandInvoke(vtkClientServerStream const&, int) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkClientServer.so" #6 vtkClientServerInterpreter::ProcessOneMessage(vtkClientServerStream const&, int) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkClientServer.so" #7 vtkClientServerInterpreter::ProcessStream(vtkClientServerStream const&) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkClientServer.so" #8 vtkSelfConnection::ProcessStreamLocally(vtkClientServerStream&) #9 vtkSelfConnection::SendStreamToClient(vtkClientServerStream&) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #10 vtkProcessModuleConnection::SendStream(unsigned int, vtkClientServerStream&) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #11 vtkProcessModuleConnectionManager::SendStream(long long, unsigned int, vtkClientServerStream&, int) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #12 vtkProcessModule::SendStream(long long, unsigned int, vtkClientServerStream&, int) #13 vtkSMProxy::UpdateProperty(char const*, int) #14 vtkSMProxy::UpdateProperty(char const*) #15 vtkSMProxy::UpdateVTKObjects() in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerManager.so" #16 vtkSMSelectionHelper::NewSelectionSourceFromSelection(long long, vtkSelection*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerManager.so" #17 vtkSMSurfaceRepresentationProxy::ConvertSelection(vtkSelection*) #18 vtkSMPVRepresentationProxy::ConvertSelection(vtkSelection*) #19 vtkSMRenderViewProxy::SelectOnSurface(unsigned int, unsigned int, unsigned int, unsigned int, vtkCollection*, vtkCollection*, vtkCollection*, bool, bool) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerManager.so" #20 pqRenderView::selectOnSurface(int*) #21 pqRubberBandHelper::processEvents(unsigned long) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libpqCore.so" #22 pqRubberBandHelper::vtkPQSelectionObserver::Execute(vtkObject*, unsigned long, void*) #23 vtkSubjectHelper::InvokeEvent(unsigned long, void*, vtkObject*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkCommon.so.pv3.2" #24 vtkObject::InvokeEvent(unsigned long, void*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkCommon.so.pv3.2" #25 QVTKWidget::mouseReleaseEvent(QMouseEvent*) #26 QWidget::event(QEvent*) #27 QVTKWidget::event(QEvent*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQVTK.so.pv3.2" #28 QApplicationPrivate::notify_helper(QObject*, QEvent*) #29 QApplication::notify(QObject*, QEvent*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtGui.so.4" #30 Uninterpreted: /home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtGui.so.4 [0x2b753ffb4406] #31 QApplication::x11ProcessEvent(_XEvent*) #32 ?? #33 g_main_context_dispatch in "/opt/gnome/lib64/libglib-2.0.so.0" #34 ?? #35 g_main_context_iteration in "/opt/gnome/lib64/libglib-2.0.so.0" #36 QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtCore.so.4" #37 ?? in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtGui.so.4" #38 QEventLoop::processEvents(QFlagsQEventLoop::ProcessEventsFlag) #39 QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtCore.so.4" #40 QCoreApplication::exec() in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libQtCore.so.4" #41 pqProcessModuleGUIHelper::RunGUIStart(int, char**, int, int) #42 vtkProcessModule::StartClient(int, char**) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #43 vtkProcessModule::Start(int, char**) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #44 vtkProcessModuleGUIHelper::Run(vtkPVOptions*) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/libvtkPVServerCommon.so" #45 pqMain::Run(QApplication&, pqProcessModuleGUIHelper*) #46 main in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/paraview-real" #47 __libc_start_main #48 vtkObject::RegisterInternal(vtkObjectBase*, int) in "/home/hunt2/mattijs/OpenFOAM/linuxAMD64/ParaView3.2-mpi/lib/paraview-3.2/paraview-real"