In the light of this and Julian's post, my practical experience may
simply be a result of deadlocks that arise when the stdio library does
its looking and my non-aware app does not include this into its
looking scenario. Probably these deadlocks lead me to try valgrind to
fix it, where the messages described here came up. Knowing that not
always things are up to the spec, I concluded stdio is not thread
safe. Obviously wrong. I still think it is better to avoid stdio in a
heavily threaded app.

Rainer

On Thu, Jan 29, 2009 at 11:06 AM, Bart Van Assche
<bart.vanass...@gmail.com> wrote:
> On Thu, Jan 29, 2009 at 9:58 AM, jody <jody....@gmail.com> wrote:
>> I tried out DRD, but even though i read the DRD manual,
>> i don't really understand the output (i used --tool=drd --var-info=yes -v)
>> I get many messages concerning the same line, a print statement
>> performed by the thread just before it exits the start func:
>> ==19067== Conflicting store by thread 2/2 at 0x0400c018 size 4
>> ==19067==    at 0x9E841C: mempcpy (in /lib/libc-2.7.so)
>> ==19067==    by 0x9B3814: vfprintf (in /lib/libc-2.7.so)
>> ==19067==    by 0x9BC9B2: printf (in /lib/libc-2.7.so)
>> ==19067==    by 0x8049745: OutputCollector::threadStart(void*)
>> (OutputCollector.cpp:242)
>> ==19067==    by 0x400920A: vg_thread_wrapper (drd_pthread_intercepts.c:193)
>> ==19067==    by 0xB0950A: start_thread (in /lib/libpthread-2.7.so)
>> ==19067==    by 0xA4AB2D: clone (in /lib/libc-2.7.so)
>
> Can you please test either the Valgrind trunk or recompile the
> Valgrind sources after having applied the patch you can find below ?
> Instructions for downloading and building the Valgrind trunk can be
> found here: http://www.valgrind.org/downloads/repository.html
>
> The above data race reported by DRD refers to internal variables of
> the glibc library. The stdio implementation in glibc uses its own
> locking implementation, and this implementation uses inline functions.
> This makes it impossible for threading tools to intercept the locking
> primitives used in the glibc stdio library. The patch below suppresses
> data race reports where the top stack frame is in glibc.
>
> Modified: trunk/glibc-2.X-drd.supp
> ===================================================================
> --- trunk/glibc-2.X-drd.supp    2009-01-29 09:20:44 UTC (rev 9086)
> +++ trunk/glibc-2.X-drd.supp    2009-01-29 09:57:22 UTC (rev 9087)
> @@ -48,6 +48,11 @@
>   fun:backtrace_symbols
>  }
>  {
> +   libc-stdio
> +   drd:ConflictingAccess
> +   obj:/lib*/libc-*
> +}
> +{
>   libc
>   drd:ConflictingAccess
>   fun:__libc_enable_asynccancel
>
> Thanks,
>
> Bart.
>

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to