is basic_string thread safe

Praveen Kumar Kalapatapu <[email protected]> Thu, 12 Jan 2006 18:49:24 +1100
Newsgroups gmane.linux.redhat.stronghold
Message-ID <[email protected]>
--===============0473018864==
Content-Type: multipart/alternative; 
	boundary="----=_Part_42279_27981280.1137052164468"

------=_Part_42279_27981280.1137052164468
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi,



Our application is crashing at a strange place inside basic_string
destructor from /usr/lib/libstdc++.so.5.

We have observed that the string which it is trying to destructor is alread=
y
null. Code is pretty straight forward we are not setting this object to nul=
l
or destroying before it is being deleted.

On the net I found lot of such crashes associated to the thread safety. Any
pointers on this respect ..Our application is a multi threaded application
running on 4 processor machine.
Any chance of this being a bug in basic_string ?

Operating System : Linux 2.4.21-32.0.1.ELhugemem #1 SMP Tue May 17 17:43:22
EDT 2005 i686 i686 i386 GNU/Linux

-bash-2.05b$ rpm -qa|grep glibc

glibc-kernheaders-2.4-8.34.1

glibc-common-2.3.2-95.30

compat-glibc-7.x-2.2.4.32.6

glibc-headers-2.3.2-95.30

glibc-devel-2.3.2-95.30

glibc-2.3.2-95.30



-bash-2.05b$ rpm -qa |grep libstd

compat-libstdc++-7.3-2.96.128

compat-libstdc++-devel-7.3-2.96.128

libstdc++-devel-3.2.3-47

libstdc++-3.2.3-47



gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-47)



Following is the core dump

#0  0x07338dbc in std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::~basic_string () from /usr/lib/libstdc++.so.5

#1  0x0805b5e0 in ~RWCString (this=3D0xf4936714) at cstring.h:261

#2  0x00126612 in ~DataElement (this=3D0xf4936708) at DataElement.h:91

#3  0x00125f54 in ~StringDataElement (this=3D0xf4936708) at StringElements.=
h
:39

#4  0x00128c4a in ~CommandResult (this=3D0xf4936708)

    at MsgIssueCommandResponse.cpp:38

#5  0x0012dc4e in ~SessionDataResponseGroup (this=3D0xf49366f0) at iostream=
:63

#6  0x00141991 in Xlist::clearAndDelete (this=3D0xf6588258) at Xlist.cpp:73

#7  0x00141a44 in ~XvarList (this=3D0xf6588258) at Xlist.cpp:90

#8  0x0012e050 in ~SessionDataResponseVector (this=3D0xf6588258)

    at MsgSessionDataResponse.cpp:61

#9  0x0012dd70 in ~MsgSessionDataResponse (this=3D0xf65881b0) at iostream:6=
3
#10 0x080687a9 in NECHManagerServant::retrieveSessionData (this=3D0xf64fb7e=
8,

    msg=3D@0xf4a914f8) at NECHManagerServant.cpp:712

#11 0x0809b765 in
POA_ExADT_IMS_NECH_manager::NECHManager::_retrieveSessionData

    (_obj=3D0xf64fb7e8, _istrm=3D@0xf6519268,

    _oper=3D0xf6589504 "retrieveSessionData", _handler=3D@0x10917764)

    at ../cc/NECHManager_s.cc:141

#12 0x00dc59a2 in VISSkelInfo::execute () from /opt/BDP/lib/liborb_r.so

#13 0x00db9280 in VISGIOPProtocolAdapter::_do_request ()

   from /opt/BDP/lib/liborb_r.so

#14 0x00db87d7 in VISGIOPProtocolAdapter::_dispatch_message ()

   from /opt/BDP/lib/liborb_r.so

#15 0x00dbb089 in VISGIOPProtocolAdapter::dispatchMessage ()

   from /opt/BDP/lib/liborb_r.so

#16 0x00ce38e3 in VISThreadPoolDispatcher::do_work ()

   from /opt/BDP/lib/liborb_r.so

#17 0x00ce2239 in VISDispatchWorker::do_work () from
/opt/BDP/lib/liborb_r.so

#18 0x00ced16a in VISThreadPool::_perform_task () from
/opt/BDP/lib/liborb_r.so

#19 0x00cee085 in VISTPoolWorker::begin () from /opt/BDP/lib/liborb_r.so #2=
0
0x004877fd in VISThread::_start () from /opt/BDP/lib/libvport_r.so

#21 0x00462dec in start_thread () from /lib/tls/libpthread.so.0

#22 0x010a9a2a in clone () from /lib/tls/libc.so.6



Regards

Praveen Kumar

------=_Part_42279_27981280.1137052164468
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Hi,</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Our application is crashing a=
t a strange place inside basic_string destructor from /usr/lib/libstdc++.so=
.5.
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"></span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">We have observed that the str=
ing which it is trying to destructor is already null. Code is pretty straig=
ht forward we are not setting this object to null or destroying before it i=
s being deleted.
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"></span></font></p>
<div class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=
=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">On the net I found lot of =
such crashes associated to the thread safety. Any pointers on this respect =
..Our application is a multi threaded application running on 4 processor ma=
chine.
</span></font></div>
<div class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=
=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Any chance of this being a=
 bug in basic_string ?</span></font></div>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"></span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Operating System : Linux 2.4.=
21-32.0.1.ELhugemem #1 SMP Tue May 17 17:43:22 EDT 2005 i686 i686 i386 GNU/=
Linux
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"></span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">-bash-2.05b$ rpm -qa|grep gli=
bc</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">glibc-kernheaders-2.4-8.34.1<=
/span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">glibc-common-2.3.2-95.30</spa=
n></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">compat-glibc-7.x-2.2.4.32.6</=
span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">glibc-headers-2.3.2-95.30</sp=
an></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">glibc-devel-2.3.2-95.30</span=
></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">glibc-2.3.2-95.30</span></fon=
t></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">-bash-2.05b$ rpm -qa |grep li=
bstd</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">compat-libstdc++-7.3-2.96.128=
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">compat-libstdc++-devel-7.3-2.=
96.128</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">libstdc++-devel-3.2.3-47</spa=
n></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">libstdc++-3.2.3-47</span></fo=
nt></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">gcc (GCC) 3.2.3 20030502 (Red=
 Hat Linux 3.2.3-47)</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Following is the core dump</s=
pan></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#0&nbsp; 0x07338dbc in std::b=
asic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&g=
t; &gt;::~basic_string () from /usr/lib/libstdc++.so.5
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#1&nbsp; 0x0805b5e0 in ~RWCSt=
ring (this=3D0xf4936714) at cstring.h:261</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#2&nbsp; 0x00126612 in ~DataE=
lement (this=3D0xf4936708) at DataElement.h:91</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#3&nbsp; 0x00125f54 in ~Strin=
gDataElement (this=3D0xf4936708) at StringElements.h:39</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#4&nbsp; 0x00128c4a in ~Comma=
ndResult (this=3D0xf4936708)</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; at MsgIssu=
eCommandResponse.cpp:38</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#5&nbsp; 0x0012dc4e in ~Sessi=
onDataResponseGroup (this=3D0xf49366f0) at iostream:63</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#6&nbsp; 0x00141991 in Xlist:=
:clearAndDelete (this=3D0xf6588258) at Xlist.cpp:73</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#7&nbsp; 0x00141a44 in ~XvarL=
ist (this=3D0xf6588258) at Xlist.cpp:90</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#8&nbsp; 0x0012e050 in ~Sessi=
onDataResponseVector (this=3D0xf6588258)</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; at MsgSess=
ionDataResponse.cpp:61</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#9&nbsp; 0x0012dd70 in ~MsgSe=
ssionDataResponse (this=3D0xf65881b0) at iostream:63 #10 0x080687a9 in NECH=
ManagerServant::retrieveSessionData (this=3D0xf64fb7e8,
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; msg=3D@0xf=
4a914f8) at NECHManagerServant.cpp:712</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#11 0x0809b765 in POA_ExADT_I=
MS_NECH_manager::NECHManager::_retrieveSessionData</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; (_obj=3D0x=
f64fb7e8, _istrm=3D@0xf6519268,</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; _oper=3D0x=
f6589504 &quot;retrieveSessionData&quot;, _handler=3D@0x10917764)</span></f=
ont></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp;&nbsp; at ../cc/N=
ECHManager_s.cc:141</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#12 0x00dc59a2 in VISSkelInfo=
::execute () from /opt/BDP/lib/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#13 0x00db9280 in VISGIOPProt=
ocolAdapter::_do_request ()</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp; from /opt/BDP/li=
b/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#14 0x00db87d7 in VISGIOPProt=
ocolAdapter::_dispatch_message ()</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp; from /opt/BDP/li=
b/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#15 0x00dbb089 in VISGIOPProt=
ocolAdapter::dispatchMessage ()</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp; from /opt/BDP/li=
b/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#16 0x00ce38e3 in VISThreadPo=
olDispatcher::do_work ()</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;&nbsp; from /opt/BDP/li=
b/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#17 0x00ce2239 in VISDispatch=
Worker::do_work () from /opt/BDP/lib/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#18 0x00ced16a in VISThreadPo=
ol::_perform_task () from /opt/BDP/lib/liborb_r.so</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#19 0x00cee085 in VISTPoolWor=
ker::begin () from /opt/BDP/lib/liborb_r.so #20 0x004877fd in VISThread::_s=
tart () from /opt/BDP/lib/libvport_r.so
</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#21 0x00462dec in start_threa=
d () from /lib/tls/libpthread.so.0</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">#22 0x010a9a2a in clone () fr=
om /lib/tls/libc.so.6</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Regards</span></font></p>
<p class=3D"MsoNormal"><font face=3D"Courier New" size=3D"2"><span style=3D=
"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Praveen Kumar</span></font></=
p>

------=_Part_42279_27981280.1137052164468--


--===============0473018864==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Stronghold-users mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/stronghold-users
--===============0473018864==--