I applaud the work of all to identify and address the issue and the commitment to identify/document and forward information upstream in cooperation of making software better.
I also am impressed and proud to be associated to a project that places testing and testability as a core value in the software development life cycle. Good work. On Mon, Jul 27, 2009 at 1:19 PM, Jay Pipes <[email protected]> wrote: > Stewart Smith wrote: > >> On Fri, Jul 24, 2009 at 07:47:30PM -0400, Jay Pipes wrote: >> >>> OK, so, I've tracked down the issue I was having with the replication >>> branch to a difference in behaviour in atomic<> variables on CentOS >>> (osindriz03) vs. other machines...hoping someone has an answer. >>> >>> Here is the code which is behaving differently depending on the platform: >>> >>> log_offset is declared as drizzled::atomic<off_t>. >>> >>> log_offset= 0; >>> uint64_t length= 42; >>> >>> off_t cur_offset; >>> >>> cur_offset= log_offset.fetch_and_add((sizeof(uint64_t) + length)); >>> >>> On ALL other platforms other than CentOS 5, the above code sets >>> log_offset AND cur_offset equal to 50. >>> >>> On CentOS, it sets log_offset to 50 and cur_offset to 0. >>> >>> What does this mean? It means that the assignment to cur_offset is >>> happening *before* the call to drizzled::atomic<off_t>::fetch_and_add(). >>> >>> Without resorting back to mutexes, I am uncertain how to solve this >>> particular timing/atomics problem. I'm hoping someone out there has more >>> experience dealing with this. >>> >> >> Is this repeatable just in a single thread? >> >> small test program? >> >> i think it'd be useful to look at the disassembled binary produced (and, >> well, diff them :) >> >> I have a few theories in my head, but will have to look more closely >> (when not really hanging out for lunch and lebanese coffee on a saturday >> :) >> >> but if you can get me binaries from both machines, preferably even ssh >> access, and point me at the right branch, will have a go. >> > > Just an FYI, it turned out to be a bug in Intel TBB. Monty is updating the > atomics.h to only use the GCC atomics implementation, even when TBB is > present. > > I'll put together a bug and test case for TBB and submit it to Intel. > > Cheers, > > Jay > > > _______________________________________________ > Mailing list: > https://launchpad.net/~drizzle-discuss<https://launchpad.net/%7Edrizzle-discuss> > Post to : [email protected] > Unsubscribe : > https://launchpad.net/~drizzle-discuss<https://launchpad.net/%7Edrizzle-discuss> > More help : https://help.launchpad.net/ListHelp >
_______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

