http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59215

--- Comment #20 from Oleg Smolsky <oleg at smolsky dot net> ---
Hey Jonathan, here is the output:

         Read of size 4 at 0x7d0400005008 by main thread (mutexes: write 
M2344, write M132):
           #0 _M_add_ref_lock 
..../gcc48/include/c++/4.8.x-google/bits/shared_ptr_base.h:236 
(exe+0x000000d0ae09)
           #1 my code (a)

         Previous atomic write of size 4 at 0x7d0400005008 by thread T21 
(mutexes: write M4016):
           #0 __tsan_atomic32_fetch_add ??:0 (libtsan.so.0+0x00000000d3e5)
           #1 __exchange_and_add_dispatch 
/mnt/project/granite/toolchains/elixir/rvbd-gcc48/include/c++/4.8.x-google/ext/atomicity.h:49
 
(exe+0x0000003d7738)
           #2 handle_event(....) 
.../gcc48/include/c++/4.8.x-google/bits/shared_ptr_base.h:546 (
              this is my code (b)

(a) string x = config()->iscsi().dc_initiator().name();

this thing very quickly copies a shared_ptr instance, dereferences it, 
gets to a sub-object, gets a field and then destructs.

(b) is a shared_ptr copy too, but it is obscured by heavy inlining

Reply via email to