[Buildbot-devel] Re: Locking stacktrace

Dobes Vandermeer dobesv at gmail.com
Wed Nov 9 18:59:25 UTC 2005

By looking into this further, I've noticed that there is a race
condition between

        reactor.callLater(0, self.nowAvailable)

And "acquireLocks" of the Build.

If two adjacent steps acquire the same lock, "acquireLocks" runs and
acquires the lock before "nowAvailable" runs.

For now, I'll change the "assert not self.owner" to "if self.owner:
return", I suggest you do the same!

On 11/4/05, Dobes Vandermeer <dobesv at gmail.com> wrote:
> I seem to get a stacktrace like this sometimes:
> 2005/11/04 15:55 Pacific Standard Time [-] Traceback (most recent call last):
>           File "Z:\Tools\PythonLibs\Python24\twisted\scripts\_twistw.py",
> line 44, in runApp
>             app.runReactorWithLogging(config, oldstdout, oldstderr)
>           File "Z:\Tools\PythonLibs\Python24\twisted\application\app.py",
> line 128, in runReactorWithLogging
>             reactor.run()
>           File "Z:\Tools\PythonLibs\Python24\twisted\internet\posixbase.py",
> line 200, in run
>             self.mainLoop()
>           File "Z:\Tools\PythonLibs\Python24\twisted\internet\posixbase.py",
> line 208, in mainLoop
>             self.runUntilCurrent()
>         --- <exception caught here> ---
>           File "Z:\Tools\PythonLibs\Python24\twisted\internet\base.py",
> line 533, in runUntilCurrent
>             call.func(*call.args, **call.kw)
>           File "Z:\Tools\PythonLibs\buildbot\locks.py", line 43, in nowAvailable
>             assert not self.owner
>         exceptions.AssertionError:
> I think it may be caused by switching a builder from one slave to
> another by reloading the configuration, when the builder has a
> SlaveLock (although I don't think the SlaveLock is held, so its a bit
> hard to debug).
> Probably i could get more information if the status page showed which
> lock(s) a builder was waiting for, on which slaves... hopefully
> that'll be ready sometime soon? :-) :-)

More information about the devel mailing list