|
From: Robert T. <rt...@sa...> - 2006-03-24 18:35:15
|
Hello,
This is a re-phrase of my previous email question on Helgrind. Sorry
I didn't send the original one in plain text.
I'm running helgrind (valgrind 2.2.0) to detect any data race on our
application, but not sure how to interpret the the last line of each
finding in the log file. Could someone help explain the meaning of
line 467 in Block 1 and line 401 in Block 2? Thank you.
(Command line:
valgrind --log-file=3Dvglog --tool=3Dhelgrind --num-callers=3D40 -v ./appli=
cation)
Block 1
---------
Line #
447 =3D=3D16023=3D=3D Thread 4:
448 =3D=3D16023=3D=3D Possible data race reading variable at 0x1D987138
449 =3D=3D16023=3D=3D at 0x82A3A74: PMutex::Signal() (tlibthrd.cxx :=
1454)
450 =3D=3D16023=3D=3D by 0x818BA45: H323Connection::Unlock() (h323.c=
xx:1422)
451 =3D=3D16023=3D=3D by 0x806A197:
H323_bsip_ex::process_bsip(tIPCMessage*) (sg_h323_ep.cxx:333)
452 =3D=3D16023=3D=3D by 0x80698A1: H323_bsip_ex::Main() (sg_h323_ep=
.cxx:128)
453 =3D=3D16023=3D=3D by 0x82A264C: PThread::PX_ThreadStart(void*)
(tlibthrd.cxx:1049)
454 =3D=3D16023=3D=3D by 0x1D4C59F0: thread_wrapper (vg_libpthread.c=
:867)
455 =3D=3D16023=3D=3D by 0xB000EF61: do__quit (vg_scheduler.c:1872)
456 =3D=3D16023=3D=3D Address 0x1D987138 is 1544 bytes inside a block =
of
size 11280 alloc'd by thread 8
457 =3D=3D16023=3D=3D at 0x1D4A639A: operator new(unsigned)
(vg_replace_malloc.c:133)
458 =3D=3D16023=3D=3D by 0x806EEB9:
GatewayEndPoint::CreateConnection(unsigned) (sg_h323_ep.cxx:1220)
459 =3D=3D16023=3D=3D by 0x806EF5D:
GatewayEndPoint::CreateConnection(unsigned, void*)
(sg_h323_ep.cxx:1228)
460 =3D=3D16023=3D=3D by 0x81A0CA2:
H323EndPoint::CreateConnection(unsigned, void*, H323Transport*,
H323SignalPDU*) ( h323ep.cxx:2020)
461 =3D=3D16023=3D=3D by 0x81A0AE0:
H323EndPoint::OnIncomingConnection(H323Transport*, H323SignalPDU&)
(h323ep.cxx:1992)
462 =3D=3D16023=3D=3D by 0x81D1C1C:
H323Transport::HandleFirstSignallingChannelPDU() (
transports.cxx:1000)
463 =3D=3D16023=3D=3D by 0x81CF39D: H225TransportThread::Main()
(transports.cxx:525)
464 =3D=3D16023=3D=3D by 0x82A264C: PThread::PX_ThreadStart(void*)
(tlibthrd.cxx:1049)
465 =3D=3D16023=3D=3D by 0x1D4C59F0: thread_wrapper (vg_libpthread.c=
:867)
466 =3D=3D16023=3D=3D by 0xB000EF61: do__quit (vg_scheduler.c:1872)
467 =3D=3D16023=3D=3D Previous state: shared RW, locked by:0x57EFB6D4
Block 2
---------
I'm puzzled with this one because thread 7 writes some values to a
block of memory that it previously allocated. What is the potential
race condition in situations like this?
Line #
380 =3D=3D16023=3D=3D Thread 7:
381 =3D=3D16023=3D=3D Possible data race writing variable at 0x1D95DB80
382 =3D=3D16023=3D=3D at 0x82A3AC0: PMutex::Signal() (tlibthrd.cxx:1=
470)
383 =3D=3D16023=3D=3D by 0x818BA45: H323Connection::Unlock() ( h323.=
cxx:1422)
384 =3D=3D16023=3D=3D by 0x818CBFD:
H323Connection::HandleSignalPDU(H323SignalPDU&) (h323.cxx:1803)
385 =3D=3D16023=3D=3D by 0x81D1DDC:
H323Transport::HandleFirstSignallingChannelPDU() (transports.cxx
:1020)
386 =3D=3D16023=3D=3D by 0x81CF39D: H225TransportThread::Main()
(transports.cxx:525)
387 =3D=3D16023=3D=3D by 0x82A264C: PThread::PX_ThreadStart(void*)
(tlibthrd.cxx:1049)
388 =3D=3D16023=3D=3D by 0x1D4C59F0: thread_wrapper (vg_libpthread.c=
:867)
389 =3D=3D16023=3D=3D by 0xB000EF61: do__quit (vg_scheduler.c:1872)
390 =3D=3D16023=3D=3D Address 0x1D95DB80 is 1544 bytes inside a block =
of
size 11280 alloc'd by thread 7
391 =3D=3D16023=3D=3D at 0x1D4A639A: operator new(unsigned)
(vg_replace_malloc.c:133)
392 =3D=3D16023=3D=3D by 0x806EEB9:
GatewayEndPoint::CreateConnection(unsigned) (sg_h323_ep.cxx:1220)
393 =3D=3D16023=3D=3D by 0x806EF5D:
GatewayEndPoint::CreateConnection(unsigned, void*)
(sg_h323_ep.cxx:1228)
394 =3D=3D16023=3D=3D by 0x81A0CA2:
H323EndPoint::CreateConnection(unsigned, void*, H323Transport*,
H323SignalPDU*) ( h323ep.cxx:2020)
395 =3D=3D16023=3D=3D by 0x81A0AE0:
H323EndPoint::OnIncomingConnection(H323Transport*, H323SignalPDU&)
(h323ep.cxx:1992)
396 =3D=3D16023=3D=3D by 0x81D1C1C:
H323Transport::HandleFirstSignallingChannelPDU() (
transports.cxx:1000)
397 =3D=3D16023=3D=3D by 0x81CF39D: H225TransportThread::Main()
(transports.cxx:525)
398 =3D=3D16023=3D=3D by 0x82A264C: PThread::PX_ThreadStart(void*)
(tlibthrd.cxx:1049)
399 =3D=3D16023=3D=3D by 0x1D4C59F0: thread_wrapper (vg_libpthread.c=
:867)
400 =3D=3D16023=3D=3D by 0xB000EF61: do__quit (vg_scheduler.c:1872)
401 =3D=3D16023=3D=3D Previous state: shared RO, no locks
Cheers,
Robert
|