On Fri, 14 Feb 2014, Paul Woegerer wrote:
> As explained by Alexander Monakov, dlsym() is defined to be pure, thus the > compiler is allowed to assume that there is no need to write the changes > performed by setup_static_allocator() into memory prior to calling dlsym(). > The added cmm_barrier() forces the compiler to write the changes into memory. > > For more details refer to: > http://lists.lttng.org/pipermail/lttng-dev/2014-February/022389.html If everyone here agrees that this is a workaround for a glibc bug, please add a note to that effect in the patch and please notify glibc upstream (again). FWIW, when toying with a similar code I implemented a different workaround along the lines of #define dlsym glibc_dlsym_proto_lies_about_leafness #include <dlfcn.h> #undef dlsym extern void *dlsym(void *, const char *); Thus avoiding the need to sprinkle unneeded compiler memory barriers in code. HTH Alexander _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
