[Gluster-devel] syncops and thread specific memory regions

Raghavendra Gowdappa rgowdapp at redhat.com
Wed Jul 2 11:57:52 UTC 2014


Hi all,

The bug fixed by [1] is a one instance of the class of problems where:
1. we access a variable which is stored in thread-specific area and hence can be stored in different memory regions across different threads.
2. A single (code) control flow is executed in more than one thread.
3. Optimization prevents recalculating address of variable mentioned in 1 every time its accessed, instead using an address calculated earlier.

The bug fixed by [1] involved "errno" as the variable. However there are other pointers which are stored in TLS like,
1. The xlator object in whose context the current code is executing in (aka THIS, set/read by using __glusterfs_this_location() ).
2. A buffer used to parse binary uuids into strings (used by uuid_utoa () ).

I think we can hit the corruption uncovered by [1] in the above two scenarios too. Comments?

[1] http://review.gluster.org/6475

regards,
Raghavendra.


More information about the Gluster-devel mailing list