Jonathan Brandmeyer found and fixed a major bug in Visual that showed
itself mainly in programs that make graphs. He found a mistake in the
ordering of locking and unlocking resources associated with making an
object visible or invisible. The locking/unlocking sequence was
inconsistent between the main thread and the rendering thread.
Manipulating obj.visible isn't very common in VPython programs, but the
graph module does this a lot when autoscaling to display or hide tick
marks as needed along axes. Hence it was programs that make graphs that
show the problem most often.
This fix doesn't cure all problems with graphing, so there must be
another bug lurking somewhere, yet to be found and squashed. But it
reduces the frequency of the problems and makes them milder. In
particular, you can kill the windows -- no zombies. The remaining
problem is that sometimes the graphing window stops graphing while other
windows continue along their way, which sounds like a different problem.
New Windows installer; other platforms to come shortly.
A partial workaround if you're unable to update immediately is to
specify fixed graphing axes with something like
gdisplay(xmax=100, ymax=50)
This helps by reducing the obj.visible manipulations involved in
autoscaling the axes.
Thank you, Jonathan!
Bruce Sherwood
|