Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] OMPI seg fault by a class with weird address.
From: Jack Bryan (dtustudy68_at_[hidden])
Date: 2011-03-18 02:09:02


thanks,
I forgot to set up storage capacity for some a vector before using [] operator on it.
thanks

> Subject: Re: [OMPI users] OMPI seg fault by a class with weird address.
> From: jsquyres_at_[hidden]
> Date: Wed, 16 Mar 2011 20:20:20 -0400
> CC: users_at_[hidden]
> To: dtustudy68_at_[hidden]
>
> 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
> jsquyres_at_[hidden]
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>