public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* SEGV in libstdc++-v3 caused when fn attached is called the second time...
@ 2004-06-02 0:50 The Thodes
2004-06-08 7:54 ` Jim Wilson
0 siblings, 1 reply; 4+ messages in thread
From: The Thodes @ 2004-06-02 0:50 UTC (permalink / raw)
To: gcc-bugs
[-- Attachment #1: Type: text/plain, Size: 23478 bytes --]
The attached .ii file, when compiled and linked with support code that calls
it twice with valid args both times, causes a SEGV in libstdc++-v3's _M_grab
implementation...
--debugging log starts here--
(gdb) print *this
Cannot access memory at address 0x0
(gdb) list
2
3 #include "league.hpp"
4
5 void League::add_team (std::string team_name)
6 {
7 Team temp_team (team_name);
8
9 this -> league_data.push_back (temp_team);
10 }
(gdb) print this->league_data
Cannot access memory at address 0x0
(gdb) up 1
#1 0x00402257 in for_loop_body(League*) (h_loaded_league=0xa041cd8)
at main.cpp:35
35 h_loaded_league -> add_team (team_name);
(gdb) print h_loaded_league
$1 = (League *) 0xa041cd8
(gdb) print *h_loaded_league
$2 = {
league_data = {<_Vector_base<Team,std::allocator<Team> >> =
{<_Vector_alloc_ba
se<Team,std::allocator<Team>,true>> = {_M_start = 0x0,
_M_finish = 0xa0426c0,
_M_end_of_storage = 0xa0426c0}, <No data fields>}, <No data
fields>}}
(gdb)
--snipped--
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::alloc
ator<char> const&) () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) bt
#0 0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::a
llocator<char> const&) () at /usr/include/c++/3.3.1/istream:401
#1 0x004259dc in std::string::string(std::string const&) ()
at /usr/include/c++/3.3.1/istream:401
#2 0x0043209e in __gnu_cxx::__normal_iterator<Team*, std::vector<Team,
std::all
ocator<Team> > >
std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >
>(__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >, __false_type) (__first=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x6114ea44}, __last=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __result=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x22040008})
at /usr/include/c++/3.3.1/bits/stl_construct.h:78
#3 0x0042f5fd in std::vector<Team, std::allocator<Team>
>::_M_insert_aux(__gnu_
cxx::__normal_iterator<Team*, std::vector<Team, std::allocator<Team> > >,
Team c
onst&) (this=0xa041cd8, __position=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_uninitialized.h:109
---Type <return> to continue, or q <return> to quit---
#4 0x0042fa05 in std::vector<Team, std::allocator<Team> >::push_back(Team
const
&) (this=0xa041cd8, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_vector.h:603
#5 0x00401402 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:9
#6 0x00402257 in for_loop_body(League*) (h_loaded_league=0xa041cd8)
at main.cpp:35
#7 0x00401e3c in main () at main.cpp:15
(gdb)
--snipped--
(gdb) stepi
League::add_team(std::string) (this=0xa041cd8, team_name=@0x22ee40)
at league_add_team.cpp:6
6 {
(gdb) watch this
Watchpoint 4: this
(gdb) c
Continuing.
Watchpoint 4: this
Old value = (League * const) 0x22ee40
New value = (League * const) 0x22ec70
0x00401386 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:6
6 {
(gdb) disassemble
Dump of assembler code for function _ZN6League8add_teamESs:
0x0040136c <_ZN6League8add_teamESs+0>: push %ebp
0x0040136d <_ZN6League8add_teamESs+1>: mov %esp,%ebp
0x0040136f <_ZN6League8add_teamESs+3>: push %edi
0x00401370 <_ZN6League8add_teamESs+4>: push %esi
0x00401371 <_ZN6League8add_teamESs+5>: push %ebx
0x00401372 <_ZN6League8add_teamESs+6>: sub $0x7c,%esp
0x00401375 <_ZN6League8add_teamESs+9>: movl $0x405a90,0xffffffa4(%ebp)
0x0040137c <_ZN6League8add_teamESs+16>: movl $0x434558,0xffffffa8(%ebp)
0x00401383 <_ZN6League8add_teamESs+23>: lea 0xffffffe8(%ebp),%eax
0x00401386 <_ZN6League8add_teamESs+26>: mov %eax,0xffffffac(%ebp)
0x00401389 <_ZN6League8add_teamESs+29>: movl $0x401404,0xffffffb0(%ebp)
0x00401390 <_ZN6League8add_teamESs+36>: mov %esp,0xffffffb4(%ebp)
0x00401393 <_ZN6League8add_teamESs+39>: lea 0xffffff8c(%ebp),%eax
0x00401396 <_ZN6League8add_teamESs+42>: mov %eax,(%esp,1)
0x00401399 <_ZN6League8add_teamESs+45>: call 0x40ef90
<_Unwind_SjLj_Register>
0x0040139e <_ZN6League8add_teamESs+50>: mov 0xc(%ebp),%eax
0x004013a1 <_ZN6League8add_teamESs+53>: mov %eax,0x4(%esp,1)
0x004013a5 <_ZN6League8add_teamESs+57>: lea 0xffffffb8(%ebp),%eax
0x004013a8 <_ZN6League8add_teamESs+60>: mov %eax,(%esp,1)
0x004013ab <_ZN6League8add_teamESs+63>: movl $0xffffffff,0xffffff90(%ebp)
0x004013b2 <_ZN6League8add_teamESs+70>: call 0x42597c <_ZNSsC1ERKSs>
0x004013b7 <_ZN6League8add_teamESs+75>: lea 0xffffffb8(%ebp),%eax
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) print &this
Address requested for identifier "this" which is in register $eax
(gdb) stepi
0x00401389 6 {
(gdb) stepi
0x00401390 6 {
(gdb) stepi
0x00401393 6 {
(gdb) stepi
Watchpoint 4: this
Old value = (League * const) 0x22ec70
New value = (League * const) 0x22ec14
0x00401396 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:6
6 {
(gdb) stepi
0x00401399 6 {
(gdb) stepi
0x0040ef90 in _Unwind_SjLj_Register () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) finish
Run till exit from #0 0x0040ef90 in _Unwind_SjLj_Register ()
at /usr/include/c++/3.3.1/istream:401
Watchpoint 4: this
Old value = (League * const) 0x22ec14
New value = (League * const) 0x1
0x0040efa9 in _Unwind_SjLj_Register () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) disassemble
Dump of assembler code for function _Unwind_SjLj_Register:
0x0040ef90 <_Unwind_SjLj_Register+0>: push %ebp
0x0040ef91 <_Unwind_SjLj_Register+1>: mov %esp,%ebp
0x0040ef93 <_Unwind_SjLj_Register+3>: sub $0x18,%esp
0x0040ef96 <_Unwind_SjLj_Register+6>: mov %ebx,0xfffffffc(%ebp)
0x0040ef99 <_Unwind_SjLj_Register+9>: mov 0x43db10,%edx
0x0040ef9f <_Unwind_SjLj_Register+15>: mov 0x8(%ebp),%ebx
0x0040efa2 <_Unwind_SjLj_Register+18>: test %edx,%edx
0x0040efa4 <_Unwind_SjLj_Register+20>: je 0x40eff3
<_Unwind_SjLj_Register+9
9>
0x0040efa6 <_Unwind_SjLj_Register+22>: mov 0x24(%edx),%eax
0x0040efa9 <_Unwind_SjLj_Register+25>: test %eax,%eax
0x0040efab <_Unwind_SjLj_Register+27>: js 0x40efe6
<_Unwind_SjLj_Register+8
6>
0x0040efad <_Unwind_SjLj_Register+29>: mov 0x24(%edx),%eax
0x0040efb0 <_Unwind_SjLj_Register+32>: test %eax,%eax
0x0040efb2 <_Unwind_SjLj_Register+34>: jne 0x40efc3
<_Unwind_SjLj_Register+5
1>
0x0040efb4 <_Unwind_SjLj_Register+36>: mov 0x1c(%edx),%eax
0x0040efb7 <_Unwind_SjLj_Register+39>: mov %eax,(%ebx)
0x0040efb9 <_Unwind_SjLj_Register+41>: mov %ebx,0x1c(%edx)
0x0040efbc <_Unwind_SjLj_Register+44>: mov 0xfffffffc(%ebp),%ebx
0x0040efbf <_Unwind_SjLj_Register+47>: mov %ebp,%esp
0x0040efc1 <_Unwind_SjLj_Register+49>: pop %ebp
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) print &this
No symbol "this" in current context.
(gdb) print 0x24+$edx
$1 = 168041572
(gdb) print/x 0x24+$edx
$2 = 0xa041c64
(gdb) print $eax
$3 = 1
--snipped--
(gdb) stepi
League::add_team(std::string) (this=0xa041cd8, team_name=@0x22ee40)
at league_add_team.cpp:6
6 {
(gdb) watch this
Watchpoint 3: this
(gdb) c
Continuing.
Watchpoint 3: this
Old value = (League * const) 0x22ee40
New value = (League * const) 0x22ec70
0x00401386 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:6
6 {
(gdb) c
Continuing.
Watchpoint 3: this
Old value = (League * const) 0x22ec70
New value = (League * const) 0x22ec14
0x00401396 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:6
6 {
(gdb) c
Continuing.
Watchpoint 3: this
Old value = (League * const) 0x22ec14
New value = (League * const) 0x1
0x0040efa9 in _Unwind_SjLj_Register () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) c
Continuing.
Watchpoint 3: this
Old value = (League * const) 0x1
New value = (League * const) 0xa041cb8
0x0040efc6 in _Unwind_SjLj_Register () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) disassemble
Dump of assembler code for function _Unwind_SjLj_Register:
0x0040ef90 <_Unwind_SjLj_Register+0>: push %ebp
0x0040ef91 <_Unwind_SjLj_Register+1>: mov %esp,%ebp
0x0040ef93 <_Unwind_SjLj_Register+3>: sub $0x18,%esp
0x0040ef96 <_Unwind_SjLj_Register+6>: mov %ebx,0xfffffffc(%ebp)
0x0040ef99 <_Unwind_SjLj_Register+9>: mov 0x43db10,%edx
0x0040ef9f <_Unwind_SjLj_Register+15>: mov 0x8(%ebp),%ebx
0x0040efa2 <_Unwind_SjLj_Register+18>: test %edx,%edx
0x0040efa4 <_Unwind_SjLj_Register+20>: je 0x40eff3
<_Unwind_SjLj_Register+9
9>
0x0040efa6 <_Unwind_SjLj_Register+22>: mov 0x24(%edx),%eax
0x0040efa9 <_Unwind_SjLj_Register+25>: test %eax,%eax
0x0040efab <_Unwind_SjLj_Register+27>: js 0x40efe6
<_Unwind_SjLj_Register+8
6>
0x0040efad <_Unwind_SjLj_Register+29>: mov 0x24(%edx),%eax
0x0040efb0 <_Unwind_SjLj_Register+32>: test %eax,%eax
0x0040efb2 <_Unwind_SjLj_Register+34>: jne 0x40efc3
<_Unwind_SjLj_Register+5
1>
0x0040efb4 <_Unwind_SjLj_Register+36>: mov 0x1c(%edx),%eax
0x0040efb7 <_Unwind_SjLj_Register+39>: mov %eax,(%ebx)
0x0040efb9 <_Unwind_SjLj_Register+41>: mov %ebx,0x1c(%edx)
0x0040efbc <_Unwind_SjLj_Register+44>: mov 0xfffffffc(%ebp),%ebx
0x0040efbf <_Unwind_SjLj_Register+47>: mov %ebp,%esp
0x0040efc1 <_Unwind_SjLj_Register+49>: pop %ebp
---Type <return> to continue, or q <return> to quit---
0x0040efc2 <_Unwind_SjLj_Register+50>: ret
0x0040efc3 <_Unwind_SjLj_Register+51>: mov 0x20(%edx),%eax
0x0040efc6 <_Unwind_SjLj_Register+54>: mov %eax,(%esp,1)
0x0040efc9 <_Unwind_SjLj_Register+57>: call 0x40fca0
<pthread_getspecific>
0x0040efce <_Unwind_SjLj_Register+62>: mov %eax,(%ebx)
0x0040efd0 <_Unwind_SjLj_Register+64>: mov 0x43db10,%eax
0x0040efd5 <_Unwind_SjLj_Register+69>: mov 0x20(%eax),%eax
0x0040efd8 <_Unwind_SjLj_Register+72>: mov %ebx,0x4(%esp,1)
0x0040efdc <_Unwind_SjLj_Register+76>: mov %eax,(%esp,1)
0x0040efdf <_Unwind_SjLj_Register+79>: call 0x40fcb0
<pthread_setspecific>
0x0040efe4 <_Unwind_SjLj_Register+84>: jmp 0x40efbc
<_Unwind_SjLj_Register+4
4>
0x0040efe6 <_Unwind_SjLj_Register+86>: call 0x40ef40 <fc_key_init_once>
0x0040efeb <_Unwind_SjLj_Register+91>: mov 0x43db10,%edx
0x0040eff1 <_Unwind_SjLj_Register+97>: jmp 0x40efad
<_Unwind_SjLj_Register+2
9>
0x0040eff3 <_Unwind_SjLj_Register+99>: call 0x40ec60
<__w32_sharedptr_initial
ize>
0x0040eff8 <_Unwind_SjLj_Register+104>: mov 0x43db10,%edx
0x0040effe <_Unwind_SjLj_Register+110>: jmp 0x40efa6
<_Unwind_SjLj_Register+2
2>
End of assembler dump.
(gdb) print &this
No symbol "this" in current context.
(gdb) up 1
#1 0x0040139e in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:6
6 {
(gdb) print &this
Address requested for identifier "this" which is in register $eax
(gdb) down 1
#0 0x0040efc6 in _Unwind_SjLj_Register ()
at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) c
Continuing.
Watchpoint 3 deleted because the program has left the block in
which its expression is valid.
0x610892bf in pthread_getspecific () from /usr/bin/cygwin1.dll
(gdb) finish
Run till exit from #0 0x610892bf in pthread_getspecific ()
from /usr/bin/cygwin1.dll
0x610a4600 in cygwin1!__getreent () from /usr/bin/cygwin1.dll
(gdb) finish
Run till exit from #0 0x610a4600 in cygwin1!__getreent ()
from /usr/bin/cygwin1.dll
Program received signal SIGSEGV, Segmentation fault.
0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::alloc
ator<char> const&) () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) bt
#0 0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::a
llocator<char> const&) () at /usr/include/c++/3.3.1/istream:401
#1 0x004259dc in std::string::string(std::string const&) ()
at /usr/include/c++/3.3.1/istream:401
#2 0x0043209e in __gnu_cxx::__normal_iterator<Team*, std::vector<Team,
std::all
ocator<Team> > >
std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >
>(__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >, __false_type) (__first=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x6114ea44}, __last=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __result=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x22040008})
at /usr/include/c++/3.3.1/bits/stl_construct.h:78
#3 0x0042f5fd in std::vector<Team, std::allocator<Team>
>::_M_insert_aux(__gnu_
cxx::__normal_iterator<Team*, std::vector<Team, std::allocator<Team> > >,
Team c
onst&) (this=0xa041cd8, __position=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_uninitialized.h:109
---Type <return> to continue, or q <return> to quit---
#4 0x0042fa05 in std::vector<Team, std::allocator<Team> >::push_back(Team
const
&) (this=0xa041cd8, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_vector.h:603
#5 0x00401402 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:9
#6 0x00402257 in for_loop_body(League*) (h_loaded_league=0xa041cd8)
at main.cpp:35
#7 0x00401e3c in main () at main.cpp:15
(gdb)
--snipped--
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::alloc
ator<char> const&) () at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
(gdb) disassemble
Dump of assembler code for function _ZNSs4_Rep7_M_grabERKSaIcES2_:
0x004241fc <_ZNSs4_Rep7_M_grabERKSaIcES2_+0>: push %ebp
0x004241fd <_ZNSs4_Rep7_M_grabERKSaIcES2_+1>: mov %esp,%ebp
0x004241ff <_ZNSs4_Rep7_M_grabERKSaIcES2_+3>: mov 0x8(%ebp),%edx
0x00424202 <_ZNSs4_Rep7_M_grabERKSaIcES2_+6>: mov 0x8(%edx),%eax
0x00424205 <_ZNSs4_Rep7_M_grabERKSaIcES2_+9>: shr $0x1f,%eax
0x00424208 <_ZNSs4_Rep7_M_grabERKSaIcES2_+12>: test %al,%al
0x0042420a <_ZNSs4_Rep7_M_grabERKSaIcES2_+14>: jne 0x42421c
<_ZNSs4_Rep7_M_g
rabERKSaIcES2_+32>
0x0042420c <_ZNSs4_Rep7_M_grabERKSaIcES2_+16>: lock addl $0x1,0x8(%edx)
0x00424211 <_ZNSs4_Rep7_M_grabERKSaIcES2_+21>: pop %ebp
0x00424212 <_ZNSs4_Rep7_M_grabERKSaIcES2_+22>: lea 0xc(%edx),%eax
0x00424215 <_ZNSs4_Rep7_M_grabERKSaIcES2_+25>: ret
0x00424216 <_ZNSs4_Rep7_M_grabERKSaIcES2_+26>: lea 0x0(%esi),%esi
0x0042421c <_ZNSs4_Rep7_M_grabERKSaIcES2_+32>: movl $0x0,0x10(%ebp)
0x00424223 <_ZNSs4_Rep7_M_grabERKSaIcES2_+39>: pop %ebp
0x00424224 <_ZNSs4_Rep7_M_grabERKSaIcES2_+40>: jmp 0x42422c
<_ZNSs4_Rep8_M_c
loneERKSaIcEj>
0x00424229 <_ZNSs4_Rep7_M_grabERKSaIcES2_+45>: nop
0x0042422a <_ZNSs4_Rep7_M_grabERKSaIcES2_+46>: nop
0x0042422b <_ZNSs4_Rep7_M_grabERKSaIcES2_+47>: nop
End of assembler dump.
--snipped--
(gdb) print/ux 8 + $edx
$4 = 0xfffffffc
(gdb) print *(8 + $edx)
Cannot access memory at address 0xfffffffc
(gdb) bt
#0 0x00424202 in std::string::_Rep::_M_grab(std::allocator<char> const&,
std::a
llocator<char> const&) () at /usr/include/c++/3.3.1/istream:401
#1 0x004259dc in std::string::string(std::string const&) ()
at /usr/include/c++/3.3.1/istream:401
#2 0x0043209e in __gnu_cxx::__normal_iterator<Team*, std::vector<Team,
std::all
ocator<Team> > >
std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Team
*, std::vector<Team, std::allocator<Team> > >
>(__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >,
__gnu_cxx::__normal_iterator<Tea
m*, std::vector<Team, std::allocator<Team> > >, __false_type) (__first=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x6114ea44}, __last=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __result=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0x22040008})
at /usr/include/c++/3.3.1/bits/stl_construct.h:78
#3 0x0042f5fd in std::vector<Team, std::allocator<Team>
>::_M_insert_aux(__gnu_
cxx::__normal_iterator<Team*, std::vector<Team, std::allocator<Team> > >,
Team c
onst&) (this=0xa041cd8, __position=
{<iterator<std::random_access_iterator_tag,Team,int,Team*,Team&>> =
{<No d
ata fields>}, _M_current = 0xa0426c0}, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_uninitialized.h:109
---Type <return> to continue, or q <return> to quit---
#4 0x0042fa05 in std::vector<Team, std::allocator<Team> >::push_back(Team
const
&) (this=0xa041cd8, __x=@0x22ec50)
at /usr/include/c++/3.3.1/bits/stl_vector.h:603
#5 0x00401402 in League::add_team(std::string) (this=0xa041cd8,
team_name=@0x22ee40) at league_add_team.cpp:9
#6 0x00402257 in for_loop_body(League*) (h_loaded_league=0xa041cd8)
at main.cpp:35
#7 0x00401e3c in main () at main.cpp:15
(gdb)
--snipped--
(gdb) disassemble
Dump of assembler code for function _ZNSsC1ERKSs:
0x0042597c <_ZNSsC1ERKSs+0>: push %ebp
0x0042597d <_ZNSsC1ERKSs+1>: mov %esp,%ebp
0x0042597f <_ZNSsC1ERKSs+3>: lea 0xffffffe8(%ebp),%eax
0x00425982 <_ZNSsC1ERKSs+6>: sub $0x88,%esp
0x00425988 <_ZNSsC1ERKSs+12>: mov %eax,0xffffffac(%ebp)
0x0042598b <_ZNSsC1ERKSs+15>: lea 0xffffff8c(%ebp),%eax
0x0042598e <_ZNSsC1ERKSs+18>: mov %eax,(%esp,1)
0x00425991 <_ZNSsC1ERKSs+21>: mov %ebx,0xfffffff4(%ebp)
0x00425994 <_ZNSsC1ERKSs+24>: mov %esi,0xfffffff8(%ebp)
0x00425997 <_ZNSsC1ERKSs+27>: mov %edi,0xfffffffc(%ebp)
0x0042599a <_ZNSsC1ERKSs+30>: movl $0x405a90,0xffffffa4(%ebp)
0x004259a1 <_ZNSsC1ERKSs+37>: movl $0x43465c,0xffffffa8(%ebp)
0x004259a8 <_ZNSsC1ERKSs+44>: movl $0x425a0c,0xffffffb0(%ebp)
0x004259af <_ZNSsC1ERKSs+51>: mov %esp,0xffffffb4(%ebp)
0x004259b2 <_ZNSsC1ERKSs+54>: call 0x40ef90 <_Unwind_SjLj_Register>
0x004259b7 <_ZNSsC1ERKSs+59>: mov 0xc(%ebp),%eax
0x004259ba <_ZNSsC1ERKSs+62>: lea 0xffffffc8(%ebp),%edx
0x004259bd <_ZNSsC1ERKSs+65>: lea 0xffffffb8(%ebp),%ecx
0x004259c0 <_ZNSsC1ERKSs+68>: mov (%eax),%eax
0x004259c2 <_ZNSsC1ERKSs+70>: mov %edx,0x8(%esp,1)
0x004259c6 <_ZNSsC1ERKSs+74>: mov %ecx,0x4(%esp,1)
0x004259ca <_ZNSsC1ERKSs+78>: sub $0xc,%eax
0x004259cd <_ZNSsC1ERKSs+81>: mov %eax,(%esp,1)
---Type <return> to continue, or q <return> to quit---
0x004259d0 <_ZNSsC1ERKSs+84>: movl $0x1,0xffffff90(%ebp)
0x004259d7 <_ZNSsC1ERKSs+91>: call 0x4241fc
<_ZNSs4_Rep7_M_grabERKSaIcES2_>
0x004259dc <_ZNSsC1ERKSs+96>: mov %eax,0x4(%esp,1)
0x004259e0 <_ZNSsC1ERKSs+100>: lea 0xffffffd8(%ebp),%edx
0x004259e3 <_ZNSsC1ERKSs+103>: mov 0x8(%ebp),%eax
0x004259e6 <_ZNSsC1ERKSs+106>: mov %edx,0x8(%esp,1)
0x004259ea <_ZNSsC1ERKSs+110>: mov %eax,(%esp,1)
0x004259ed <_ZNSsC1ERKSs+113>: call 0x423a5c
<_ZNSs12_Alloc_hiderC1EPcRKSaIcE
>
0x004259f2 <_ZNSsC1ERKSs+118>: lea 0xffffff8c(%ebp),%eax
0x004259f5 <_ZNSsC1ERKSs+121>: mov %eax,(%esp,1)
0x004259f8 <_ZNSsC1ERKSs+124>: call 0x40f000 <_Unwind_SjLj_Unregister>
0x004259fd <_ZNSsC1ERKSs+129>: mov 0xfffffff4(%ebp),%ebx
0x00425a00 <_ZNSsC1ERKSs+132>: mov 0xfffffff8(%ebp),%esi
0x00425a03 <_ZNSsC1ERKSs+135>: mov 0xfffffffc(%ebp),%edi
0x00425a06 <_ZNSsC1ERKSs+138>: mov %ebp,%esp
0x00425a08 <_ZNSsC1ERKSs+140>: pop %ebp
0x00425a09 <_ZNSsC1ERKSs+141>: ret
0x00425a0a <_ZNSsC1ERKSs+142>: mov %esi,%esi
0x00425a0c <_ZNSsC1ERKSs+144>: add $0x18,%ebp
0x00425a0f <_ZNSsC1ERKSs+147>: movl $0xffffffff,0xffffff90(%ebp)
0x00425a16 <_ZNSsC1ERKSs+154>: mov 0xffffff94(%ebp),%eax
0x00425a19 <_ZNSsC1ERKSs+157>: mov %eax,(%esp,1)
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) break *0x4259d7
Breakpoint 7 at 0x4259d7: file /usr/include/c++/3.3.1/istream, line 401.
(gdb) c
Continuing.
Breakpoint 7, 0x004259d7 in std::string::string(std::string const&) ()
at /usr/include/c++/3.3.1/istream:401
401 { return this->getline(__s, __n, this->widen('\n')); }
--snipped--
(gdb) x/20xw $esp
0x22e9a0: 0x61124218 0x0022e9e0 0x0022e9f0 0x610a92ed
0x22e9b0: 0x0a051ce8 0x0022ea70 0x00000001 0x610a9387
0x22e9c0: 0x0a051ce8 0x61005ac0 0x610f3060 0x00405a90
0x22e9d0: 0x0043465c 0x0022ea10 0x00425a0c 0x0022e9a0
0x22e9e0: 0x0022ea10 0x61005ac0 0x610f3060 0x610a79eb
(gdb) print $eip
$1 = (void *) 0x4259d7
(gdb) print *0x61124218
$2 = 0
(gdb)
--snipped--
--debugging log ends--
--version information starts here--
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/specs
Configured with:
/GCC/gcc-3.3.1-3/configure --with-gcc --with-gnu-ld --with-gnu-
as --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --li
bexe
cdir=/usr/sbin --mandir=/usr/share/man --infodir=/usr/share/info --enable-la
ngua
ges=c,ada,c++,f77,pascal,java,objc --enable-libgcj --enable-threads=posix --
with
-system-zlib --enable-nls --without-included-gettext --enable-interpreter --
enab
le-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared -
-dis
able-win32-registry --enable-java-gc=boehm --disable-hash-synchronization --
verb
ose --target=i686-pc-cygwin --host=i686-pc-cygwin --build=i686-pc-cygwin
Thread model: posix
gcc version 3.3.1 (cygming special)
--version information ends--
--compiler cmd line+output starts here--
Lucas@your-xu5v9frokn ~/lessons/leaguestats
$ gcc -save-temps -fno-elide-constructors -gstabs+3 -c team_add_game.cpp
--compiler cmd line+output ends--
Lucas
[-- Attachment #2: team_add_game.ii.bz2 --]
[-- Type: application/octet-stream, Size: 74203 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: SEGV in libstdc++-v3 caused when fn attached is called the second time...
2004-06-02 0:50 SEGV in libstdc++-v3 caused when fn attached is called the second time The Thodes
@ 2004-06-08 7:54 ` Jim Wilson
2004-06-08 13:21 ` The Thodes
0 siblings, 1 reply; 4+ messages in thread
From: Jim Wilson @ 2004-06-08 7:54 UTC (permalink / raw)
To: The Thodes; +Cc: gcc-bugs
The Thodes wrote:
> The attached .ii file, when compiled and linked with support code that calls
> it twice with valid args both times, causes a SEGV in libstdc++-v3's _M_grab
> implementation...
Bugs should be reported into our bugzilla database rather than sent to
gcc-bugs. We do not track bugs reported by email, so you are more
likely to get a useful answer if you file it into bugzilla. See
http://gcc.gnu.org/bugs.html
for more info on reporting bugs.
This does not seem to be a complete testcase. I get a linker error for
an undefined main function when I compile it. If we can't reproduce the
problem you reported, then we won't be able to look at it.
It isn't clear if there is any useful info in the gdb output you
included. You haven't annotated any of it, so it is hard to tell what
it is for. Was there something specific you were trying to demonstrate
in the gdb output?
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: SEGV in libstdc++-v3 caused when fn attached is called the second time...
2004-06-08 7:54 ` Jim Wilson
@ 2004-06-08 13:21 ` The Thodes
2004-06-08 18:45 ` Jim Wilson
0 siblings, 1 reply; 4+ messages in thread
From: The Thodes @ 2004-06-08 13:21 UTC (permalink / raw)
To: Jim Wilson; +Cc: gcc-bugs
The program that triggers this bug consists of about 15 source files...
Should I attach them all? (In a new bug report, of course) And, I forgot my
Bugzilla passwd. D'oh!
----- Original Message -----
From: "Jim Wilson" <wilson@specifixinc.com>
To: "The Thodes" <aspiesrule@mcleodusa.net>
Cc: <gcc-bugs@gcc.gnu.org>
Sent: Tuesday, June 08, 2004 2:54 AM
Subject: Re: SEGV in libstdc++-v3 caused when fn attached is called the
second time...
> The Thodes wrote:
> > The attached .ii file, when compiled and linked with support code that
calls
> > it twice with valid args both times, causes a SEGV in libstdc++-v3's
_M_grab
> > implementation...
>
> Bugs should be reported into our bugzilla database rather than sent to
> gcc-bugs. We do not track bugs reported by email, so you are more
> likely to get a useful answer if you file it into bugzilla. See
> http://gcc.gnu.org/bugs.html
> for more info on reporting bugs.
>
> This does not seem to be a complete testcase. I get a linker error for
> an undefined main function when I compile it. If we can't reproduce the
> problem you reported, then we won't be able to look at it.
>
> It isn't clear if there is any useful info in the gdb output you
> included. You haven't annotated any of it, so it is hard to tell what
> it is for. Was there something specific you were trying to demonstrate
> in the gdb output?
> --
> Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
>
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: SEGV in libstdc++-v3 caused when fn attached is called the second time...
2004-06-08 13:21 ` The Thodes
@ 2004-06-08 18:45 ` Jim Wilson
0 siblings, 0 replies; 4+ messages in thread
From: Jim Wilson @ 2004-06-08 18:45 UTC (permalink / raw)
To: The Thodes; +Cc: gcc-bugs
The Thodes wrote:
> The program that triggers this bug consists of about 15 source files...
> Should I attach them all? (In a new bug report, of course) And, I forgot my
> Bugzilla passwd. D'oh!
We would prefer a smaller testcase of course. If you make it too hard
for us to reproduce the bug, then it may be the case that no one will
bother to try.
There is no point in submitting an incomplete testcase though. So if
you are submitting a bug, you need to submit everything we need to
reproduce it. If the program is too large to include as a testcase,
then perhaps you could put it on an ftp or web site, and put a URL in
the bug report.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-06-08 18:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-02 0:50 SEGV in libstdc++-v3 caused when fn attached is called the second time The Thodes
2004-06-08 7:54 ` Jim Wilson
2004-06-08 13:21 ` The Thodes
2004-06-08 18:45 ` Jim Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).