Here is a report of the current races. http://paste.ubuntu.com/11256308/

On Thu, May 21, 2015 at 11:10 AM, Tim Penhey <tim.pen...@canonical.com> wrote:
> Thanks Dave for this great write up.
>
> In order to drive the data races to zero, and make a soon to be added CI
> test as voting, I propose that as folks are writing tests in packages,
> races in at least that file, an possibly that package should be fixed.
>
> Tim
>
> On 21/05/15 12:12, David Cheney wrote:
>> Hello,
>>
>> TL;DR - juju has lots of problems with data races, please test your
>> code with the -race flag to ensure it doesn't get worse while we try
>> to fix the problem.
>>
>> Longer version:
>>
>> In debugging https://bugs.launchpad.net/bugs/1456398 I found that
>> there are multiple data races in the Juju code base. It's been long
>> suspected that the test's are racy, PatchValue is super easy to
>> introduce a race if all the workers started by a test have not exited
>> before the suite's tear down function runs.
>>
>> However, more serious races have been discovered, such as
>> https://bugs.launchpad.net/bugs/1456857 which affects code all the way
>> back to 1.22.
>>
>> Why is a data race bad ?
>>
>> Ok, so you're looking at https://bugs.launchpad.net/bugs/1456857 and
>> you're thinking, so maybe the tls code accidentally uses the wrong
>> certificate for a little bit, how bad is that?
>>
>> The problem is data races affect the integrity of the structures that
>> the garbage collector uses. In the example above replacing the
>> certificate means one CPU can see the new value, and another
>> potentially the old value. When it comes to to run the gc, depending
>> on which CPU walks that chain of pointers it may think that the old
>> certificate is still live, or the new certificate is unreachable --
>> and boom that memory is marked as free and the certificate corrupted.
>>
>> The short version is: there are no safe data races, and Juju is not
>> reliable until they have all been fixed.
>>
>> How to run the race detector ?
>>
>> The race detector comes with Go and is available by adding the -race
>> flag to invocations of go test, so what was
>>
>>     go test github.com/juju/juju/...
>>
>> becomes
>>
>>     go test -race github.com/juju/juju/...
>>
>> The downside of this is the race detector has significant overhead, at
>> least 2x, so tests will be even slower.
>>
>> Thanks
>>
>> Dave
>>
>

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to