fix for [#17878] Scripts operating on blender objects don't clear memory after a...
authorCampbell Barton <ideasman42@gmail.com>
Wed, 22 Oct 2008 03:10:00 +0000 (03:10 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 22 Oct 2008 03:10:00 +0000 (03:10 +0000)
commit59a30d822fe5ecfafbb5676b2058b7ff8d3760ed
treebc3630bafe6fb6b6c6cc9294ccd78dac23e705b0
parent4936e09cdf37e0225e948312a23afa576f2fae35
fix for [#17878] Scripts operating on blender objects don't clear memory after a crash
This is an interesting bug since it is likely the cause of many other suspicious python crashes in blender.

sys.last_traceback would store references to PyObjects at the point of the crash.
it would only free these when sys.last_traceback was set again or on exit.

This caused many crashes in the BGE while testing since python would end up freeing invalid game objects -
When running scripts with errors, Blender would crash every 2-5 runs - in my test just now it crashed after 4 trys.

It could also segfault blender, when (for eg) you run a script that has objects referenced. then load a new file and run another script that raises an error.
In this case all the invalid Blender-Object's user counts would be decremented, even though none of the pointers were still valid.
source/blender/python/BPY_interface.c
source/gameengine/GameLogic/SCA_PythonController.cpp