|
From: Robert T. <rob...@gm...> - 2006-03-19 00:53:17
|
Hello,
I'm running helgrind (valgrind 2.2) to detect any data race on our
application, but not quite sure how to interpret the results in the log
file.
Is there a document or readme file available that I could refer to?
Otherwise, could someone help explain what this following excerpts are
about? Very much appreciated!!!
Block 1
---------
I guess Line 449 thru 455 are back trace stack of Thread 4. Line 457 thru
466 are back trace stacks of Thread 8.
But what does the error on line 448 (Possible data race reading) apply to?
Also what is line 467 referring to?
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:1=
454)
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(tIPCM=
essage*)
(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(u=
nsigned,
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
here?
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.c=
xx: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(u=
nsigned,
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.
|