Make sure you have the latest version of valgrind. But it definitely does highlight what could be real problems if you read down far enough in the output.
> ==18729== Invalid write of size 8 > ==18729== at 0x443BEF: initPopPara(population*, > std::vector<message_para_to_workersT, > std::allocator<message_para_to_workersT> >&, initParaType&, int, int, > std::vector<double, std::allocator<double> >&) (main-parallel2.cpp:552) > ==18729== by 0x44F12E: main (main-parallel2.cpp:204) > ==18729== Address 0x62c9da0 is 0 bytes after a block of size 0 alloc'd > ==18729== at 0x4A0666E: operator new(unsigned long) > (vg_replace_malloc.c:220) > ==18729== by 0x4573E4: void > std::__uninitialized_fill_n_aux<message_para_to_workersT*, unsigned long, > message_para_to_workersT>(message_para_to_workersT*, unsigned long, > message_para_to_workersT const&, __false_type) (new_allocator.h:88) > ==18729== by 0x4576CF: void > std::__uninitialized_fill_n_a<message_para_to_workersT*, unsigned long, > message_para_to_workersT, > message_para_to_workersT>(message_para_to_workersT*, unsigned long, > message_para_to_workersT const&, std::allocator<message_para_to_workersT>) > (stl_uninitialized.h:218) > ==18729== by 0x44EE2E: main (stl_vector.h:218) The above is an invalid read of write of size 8 -- you're essentially writing outside of an array. Valgrind is showing you the call stack to how it got there. Looks like you new'ed or malloc'ed a block of size 0 and then tried to write something to it. Writing to memory that you don't own is a no-no; it can cause Very Bad Things to happen. You should probably investigate this, and the other issues that it is reporting (e.g., the next invalid read of size 8). > ==18729== > ==18729== Invalid read of size 8 > ==18729== at 0x44F13A: main (main-parallel2.cpp:208) > ==18729== Address 0x62c9d60 is 0 bytes after a block of size 0 alloc'd > ==18729== at 0x4A0666E: operator new(unsigned long) > (vg_replace_malloc.c:220) > ==18729== by 0x45733D: void > std::__uninitialized_fill_n_aux<message_para_to_workersT*, unsigned long, > message_para_to_workersT>(message_para_to_workersT*, unsigned long, > message_para_to_workersT const&, __false_type) (new_allocator.h:88) > ==18729== by 0x4576CF: void > std::__uninitialized_fill_n_a<message_para_to_workersT*, unsigned long, > message_para_to_workersT, > message_para_to_workersT>(message_para_to_workersT*, unsigned long, > message_para_to_workersT const&, std::allocator<message_para_to_workersT>) > (stl_uninitialized.h:218) > ==18729== by 0x44EE2E: main (stl_vector.h:218) > ==18729== > > valgrind: m_mallocfree.c:225 (mk_plain_bszB): Assertion 'bszB != 0' failed. > valgrind: This is probably caused by your program erroneously writing past the > end of a heap block and corrupting heap metadata. If you fix any > invalid writes reported by Memcheck, this assertion failure will > > probably go away. Please try that before reporting this as a bug. > > ==18729== at 0x38029D5C: report_and_quit (m_libcassert.c:145) > ==18729== by 0x3802A032: vgPlain_assert_fail (m_libcassert.c:217) > ==18729== by 0x38035645: vgPlain_arena_malloc (m_mallocfree.c:225) > ==18729== by 0x38002BB5: vgMemCheck_new_block (mc_malloc_wrappers.c:199) > ==18729== by 0x38002F6B: vgMemCheck___builtin_new > (mc_malloc_wrappers.c:246) > ==18729== by 0x3806070C: do_client_request (scheduler.c:1362) > ==18729== by 0x38061D30: vgPlain_scheduler (scheduler.c:1061) > ==18729== by 0x38085E6E: run_a_thread_NORETURN (syswrap-linux.c:91) > > sched status: > running_tid=1 > > Thread 1: status = VgTs_Runnable > ==18729== at 0x4A0666E: operator new(unsigned long) > (vg_replace_malloc.c:220) > ==18729== by 0x464506: __gnu_cxx::new_allocator<int>::allocate(unsigned > long, void const*) (new_allocator.h:88) > ==18729== by 0x46452E: std::_Vector_base<int, std::allocator<int> > >::_M_allocate(unsigned long) (stl_vector.h:127) > ==18729== by 0x464560: std::_Vector_base<int, std::allocator<int> > >::_Vector_base(unsigned long, std::allocator<int> const&) (stl_vector.h:113) > ==18729== by 0x464B6A: std::vector<int, std::allocator<int> > >::vector(unsigned long, int const&, std::allocator<int> const&) > (stl_vector.h:216) > ==18729== by 0x488F62: Index::Index() (index.cpp:20) > ==18729== by 0x489147: ReadFile(char const*) (index.cpp:86) > ==18729== by 0x48941C: ImportIndices() (index.cpp:121) > ==18729== by 0x445D00: myNeplanTaskScheduler(CNSGA2*, int, int, int, > population*, char, int, std::vector<message_para_to_workersT, > std::allocator<message_para_to_workersT> >&, ompi_datatype_t*, int&, int&, > std::vector<std::vector<double, std::allocator<double> >, > std::allocator<std::vector<double, std::allocator<double> > > >&, > std::vector<std::vector<double, std::allocator<double> >, > std::allocator<std::vector<double, std::allocator<double> > > >&, > std::vector<double, std::allocator<double> >&, int, > std::vector<std::vector<double, std::allocator<double> >, > std::allocator<std::vector<double, std::allocator<double> > > >&, > ompi_datatype_t*, int, ompi_datatype_t*, int) (myNetplanScheduler.cpp:109) > ==18729== by 0x44F2DF: main (main-parallel2.cpp:216) -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/