Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Core dumping at push_back for a vector (On Linux and HP) (http://www.velocityreviews.com/forums/t268279-core-dumping-at-push_back-for-a-vector-on-linux-and-hp.html)

Ganesh Gella 07-12-2003 08:31 PM

Core dumping at push_back for a vector (On Linux and HP)
 
Hi All,

I am using g++ on Linux, and my code has lot of vectors each stores a
particualr type of structure. (Structure internally had some vectors).

When I am trying to push_back an element to a one of the vectors in
the parent strutcure, it always core dumps on Linux and HP. On Solaris
the same code is working fine without any problem.

My code is actually an API, and this problem is seen only by few
callers and not by everybody on linux/HP.

Here is the stack trace of core dump, can some of you help me out
here..

#0 0x080ff6bd in basic_string<char, string_char_traits<char>,
__default_alloc_template<true, 0> >::Rep::grab (this=0x3f0dca1e)
at /usr/include/g++-3/std/bastring.h:75
75 charT* grab () { if (selfish) return clone (); ++ref;
return data (); }
(gdb) where
#0 0x080ff6bd in basic_string<char, string_char_traits<char>,
__default_alloc_template<true, 0> >::Rep::grab (this=0x3f0dca1e)
at /usr/include/g++-3/std/bastring.h:75
#1 0x080fe985 in basic_string<char, string_char_traits<char>,
__default_alloc_template<true, 0> >::basic_string (this=0x828ab24,
str=@0xbfffedbc)
at /usr/include/g++-3/std/bastring.h:177
#2 0x0810670e in ImageData::ImageData (this=0x828ab18,
_ctor_arg=@0xbfffedb0)
at /usr/include/g++-3/stl_construct.h:48
#3 0x080ffc8b in void construct<ImageData, ImageData> (__p=0x828ab18,
__value=@0xbfffedb0) at /usr/include/g++-3/stl_construct.h:48
#4 0x080ffda2 in vector<ImageData, allocator<ImageData>
>::_M_insert_aux (

this=0xbfffee58, __position=0x0, __x=@0xbfffedb0)
at /usr/include/g++-3/stl_vector.h:604
#5 0x080febab in vector<ImageData, allocator<ImageData> >::push_back
(
this=0xbfffee58, __x=@0xbfffedb0) at
/usr/include/g++-3/stl_vector.h:325
#6 0x0809072b in PickListReports::makeModel (this=0x82927a8)
at picklistreports.cpp:820
#7 0x08080f3b in vreport (robotNum=0x0, vaultName=0x828e028 "V1",
profileName=0x0, sessionid=1, reportid=-1, reportFormat=0,
distInfo=0x0,
argInfo=0x0) at vreport.cpp:350
#8 0x0807fb1f in vreport (robot=0x0, vault=0x828e028 "V1",
profile=0x0,
sessionid=1) at vreport.cpp:71
#9 0x08071f28 in DoReport (rptcmd=0xbffffa79 "picking_library",
sessionId=1,
reportFileName=0x0) at reports.cpp:85
#10 0x08079873 in new_main (argC=9, argV=0xbffff914) at vltrun.cpp:431
#11 0x080794e8 in main (argC=9, argV=0xbffff914) at vltrun.cpp:342
#12 0x410b8507 in __libc_start_main (main=0x80794d4 <main>, argc=9,
ubp_av=0xbffff914, init=0x804fd28 <_init>, fini=0x812be24 <_fini>,
rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbffff90c)
at ../sysdeps/generic/libc-start.c:129

#6 is the place where I am using push_back.

I tried using stlport instead of g++'s STL but no use it core dumps
at the same place always.

Your help is highly appreciated in this regard.

Thanks
Ganesh.

Victor Bazarov 07-12-2003 08:39 PM

Re: Core dumping at push_back for a vector (On Linux and HP)
 
"Ganesh Gella" <gk_gella@yahoo.com> wrote...
> I am using g++ on Linux, and my code has lot of vectors each stores a
> particualr type of structure. (Structure internally had some vectors).
>
> When I am trying to push_back an element to a one of the vectors in
> the parent strutcure, it always core dumps on Linux and HP. On Solaris
> the same code is working fine without any problem.
>
> My code is actually an API, and this problem is seen only by few
> callers and not by everybody on linux/HP.
>
> Here is the stack trace of core dump, can some of you help me out
> here..
> [...]


Don't post this OS- and compiler-specific rubbish. Post code.

> I tried using stlport instead of g++'s STL but no use it core dumps
> at the same place always.


I can't see any "place". Neither can I see any "particular
structure". Post code.

Victor



Stephen Howe 07-13-2003 12:25 AM

Re: Core dumping at push_back for a vector (On Linux and HP)
 
> I tried using stlport instead of g++'s STL but no use it core dumps
> at the same place always.
>
> Your help is highly appreciated in this regard.


Then post code not meaningless crap.

Your probably using vector incorrectly, we will never know until we see some
_complete_ _compilable_ code that illustrates the problem.

Stephen Howe



Ganesh Gella 07-14-2003 06:34 PM

Re: Core dumping at push_back for a vector (On Linux and HP)
 
"Stephen Howe" <NOSPAMsjhowe@dial.pipex.com> wrote in message news:<3f10a6bb$0$11375$cc9e4d1f@news.dial.pipex.co m>...
> > I tried using stlport instead of g++'s STL but no use it core dumps
> > at the same place always.
> >
> > Your help is highly appreciated in this regard.

>
> Then post code not meaningless crap.
>
> Your probably using vector incorrectly, we will never know until we see some
> _complete_ _compilable_ code that illustrates the problem.
>
> Stephen Howe


Okay, here is the code I am using

for (pImg=filteredList.begin(); pImg != filteredList.end(); ++pImg)
{
ImageData idata;
FRAG_vec::iterator pFrag;
for (pFrag=(pImg->frags).begin(); pFrag != (pImg->frags).end(); ++pF
rag)
{
idata.imageId = pImg->backupid;
idata.client = pImg->client;
idata.kbytes = pFrag->kilobytes;
idata.backedup_dt = pImg->backup_time ;
idata.fragNum = pFrag->fragment;

}
(mdata.imageList).push_back(idata);

Here I am getting core dump at push_back(idata).

Posted the stack trace in previous messages.

Thanks
Ganesh.

Victor Bazarov 07-14-2003 06:55 PM

Re: Core dumping at push_back for a vector (On Linux and HP)
 
"Ganesh Gella" <gk_gella@yahoo.com> wrote in message
news:d3a6febb.0307140646.78c0be85@posting.google.c om...
> "Stephen Howe" <NOSPAMsjhowe@dial.pipex.com> wrote in message

news:<3f10a6bb$0$11375$cc9e4d1f@news.dial.pipex.co m>...
> > > I tried using stlport instead of g++'s STL but no use it core dumps
> > > at the same place always.
> > >
> > > Your help is highly appreciated in this regard.

> >
> > Then post code not meaningless crap.
> >
> > Your probably using vector incorrectly, we will never know until we see

some
> > _complete_ _compilable_ code that illustrates the problem.
> >
> > Stephen Howe

>
> Okay, here is the code I am using
>
> for (pImg=filteredList.begin(); pImg != filteredList.end();

++pImg)
> {
> ImageData idata;
> FRAG_vec::iterator pFrag;
> for (pFrag=(pImg->frags).begin(); pFrag !=

(pImg->frags).end(); ++pF
> rag)
> {
> idata.imageId = pImg->backupid;
> idata.client = pImg->client;
> idata.kbytes = pFrag->kilobytes;
> idata.backedup_dt = pImg->backup_time ;
> idata.fragNum = pFrag->fragment;
>
> }
> (mdata.imageList).push_back(idata);
>
> Here I am getting core dump at push_back(idata).


The most probable situation is that your 'ImageData' has some
dynamic memory that you don't handle correctly. Find and read
about "The Rule Of Three".

Victor



John Harrison 07-14-2003 06:59 PM

Re: Core dumping at push_back for a vector (On Linux and HP)
 

"Ganesh Gella" <gk_gella@yahoo.com> wrote in message
news:d3a6febb.0307140646.78c0be85@posting.google.c om...
> "Stephen Howe" <NOSPAMsjhowe@dial.pipex.com> wrote in message

news:<3f10a6bb$0$11375$cc9e4d1f@news.dial.pipex.co m>...
> > > I tried using stlport instead of g++'s STL but no use it core dumps
> > > at the same place always.
> > >
> > > Your help is highly appreciated in this regard.

> >
> > Then post code not meaningless crap.
> >
> > Your probably using vector incorrectly, we will never know until we see

some
> > _complete_ _compilable_ code that illustrates the problem.
> >
> > Stephen Howe

>
> Okay, here is the code I am using
>
> for (pImg=filteredList.begin(); pImg != filteredList.end();

++pImg)
> {
> ImageData idata;
> FRAG_vec::iterator pFrag;
> for (pFrag=(pImg->frags).begin(); pFrag !=

(pImg->frags).end(); ++pF
> rag)
> {
> idata.imageId = pImg->backupid;
> idata.client = pImg->client;
> idata.kbytes = pFrag->kilobytes;
> idata.backedup_dt = pImg->backup_time ;
> idata.fragNum = pFrag->fragment;
>
> }
> (mdata.imageList).push_back(idata);
>
> Here I am getting core dump at push_back(idata).
>
> Posted the stack trace in previous messages.
>
> Thanks
> Ganesh.


Almost certainly your ImageData object does not have a valid copy
constructor.

john




All times are GMT. The time now is 05:02 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.