ev_async race condition??

Jose Madrigal mac.yosef at gmail.com
Fri May 20 21:01:00 CEST 2016


Hi!! I'm using libev in a multithreading project and I'm debugging with
ThreadSanitizer from clang.  The ThreadSanitizer says there is a data race
in libev, but i'm not sure if it is a false positive.

I'm wake up a event loop using ev_async because belongs to another thread.
This is not supposed cause races.

This is the traceback that ThreadSanitizer throw:

thread 1 (perform a Write)
#0 evpipe_write - ev.c:2443
#1 ev_async_send - ev.c:4912
#2 ev::async::send() - ev++.h:801

thread 2 (perform a Read)
#0 ev_run - ev.c:3613

And then when I take a look on those files the variable that apparently
races is "pipe_write_skipped" but in the code looks like is a
"sig_atomic_t" type that should not be causing races.

Is there any chances that this race condition is real or is just a false
positive??

Sorry if I was not clear enough or I misspoke, english is not my strong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.schmorp.de/pipermail/libev/attachments/20160520/51c37153/attachment.html>


More information about the libev mailing list