And another issue here:

==26016== Invalid read of size 4
==26016==    at 0xF9EC66: MWMechanics::AiCombat::execute(MWWorld::Ptr const&, float) (aicombat.cpp:442)
==26016==    by 0xF8F5BE: MWMechanics::AiSequence::execute(MWWorld::Ptr const&, float) (aisequence.cpp:97)
==26016==    by 0xF7C098: MWMechanics::Actors::updateActor(MWWorld::Ptr const&, float) (actors.cpp:215)
==26016==    by 0xF80A2C: MWMechanics::Actors::update(float, bool) (actors.cpp:859)
==26016==    by 0xF6431D: MWMechanics::MechanicsManager::update(float, bool) (mechanicsmanagerimp.cpp:387)
==26016==    by 0xFCC1E3: OMW::Engine::frameRenderingQueued(Ogre::FrameEvent const&) (engine.cpp:114)
==26016==    by 0x4F91DBC: Ogre::Root::_fireFrameRenderingQueued(Ogre::FrameEvent&) (in /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.9.0)
==26016==    by 0x4F92260: Ogre::Root::_fireFrameRenderingQueued() (in /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.9.0)
==26016==    by 0x4F92291: Ogre::Root::_updateAllRenderTargets() (in /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.9.0)
==26016==    by 0x4F9233F: Ogre::Root::renderOneFrame() (in /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.9.0)
==26016==    by 0xFCF4C8: OMW::Engine::go() (engine.cpp:460)
==26016==    by 0xFBE716: main (main.cpp:283)
==26016==  Address 0x461806b0 is 16 bytes inside a block of size 32 free'd
==26016==    at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26016==    by 0xDE5BED: __gnu_cxx::new_allocator<std::_List_node<ESM::Pathgrid::Point> >::deallocate(std::_List_node<ESM::Pathgrid::Point>*, unsigned long) (new_allocator.h:110)
==26016==    by 0xDE5BAD: std::_List_base<ESM::Pathgrid::Point, std::allocator<ESM::Pathgrid::Point> >::_M_put_node(std::_List_node<ESM::Pathgrid::Point>*) (stl_list.h:338)
==26016==    by 0xDE5B1A: std::_List_base<ESM::Pathgrid::Point, std::allocator<ESM::Pathgrid::Point> >::_M_clear() (list.tcc:79)
==26016==    by 0xDE5916: std::_List_base<ESM::Pathgrid::Point, std::allocator<ESM::Pathgrid::Point> >::~_List_base() (in /home/scrawl/Dev/openmw/build/openmw)
==26016==    by 0xDE546D: std::list<ESM::Pathgrid::Point, std::allocator<ESM::Pathgrid::Point> >::~list() (stl_list.h:438)
==26016==    by 0xF9EC0B: MWMechanics::AiCombat::execute(MWWorld::Ptr const&, float) (aicombat.cpp:440)
==26016==    by 0xF8F5BE: MWMechanics::AiSequence::execute(MWWorld::Ptr const&, float) (aisequence.cpp:97)
==26016==    by 0xF7C098: MWMechanics::Actors::updateActor(MWWorld::Ptr const&, float) (actors.cpp:215)
==26016==    by 0xF80A2C: MWMechanics::Actors::update(float, bool) (actors.cpp:859)
==26016==    by 0xF6431D: MWMechanics::MechanicsManager::update(float, bool) (mechanicsmanagerimp.cpp:387)
==26016==    by 0xFCC1E3: OMW::Engine::frameRenderingQueued(Ogre::FrameEvent const&) (engine.cpp:114)

Shouldn't getPath() return by reference? Otherwise the iterator refers to a temporary and becomes invalid.