[Gluster-devel] pthread_mutex misusage in glusterd_op_sm

Emmanuel Dreyfus manu at netbsd.org
Tue Nov 25 15:12:06 UTC 2014


Hello

in glusterd_op_sm(), we lock and unlock the gd_op_sm_lock mutex. 
Unfortunately, locking and unlocking can happen in different threads
(task swap will occur in handelr call).

This case is explictely covered by POSIX: the behavior is undefined.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutex_lock.html

When unlocking from a thread that is not owner, Linux seems to be fine
(though you never know with unspecified operation), while NetBSD returns 
EPERM, causing a spurious error in tests/basic/pump.t . It can be observed
in a few failed tests here:
http://build.gluster.org/job/rackspace-netbsd7-regression-triggered/

Fixing it seems far from being obvious. I guess it needs to use syncop,
but the change would be intrusive. Do we have another option? Is it 
possible to switch a task to a given thread?

-- 
Emmanuel Dreyfus
manu at netbsd.org


More information about the Gluster-devel mailing list