gtg-contributors team mailing list archive
-
gtg-contributors team
-
Mailing list archive
-
Message #00483
Merged dethreadization
Hello people,
I've merged my dethreadization branch as all tests are now working. There
are still some crashes from time to time but they are a lot less frequent.
I think I now understand deeply what gtk.treemodel should be and I've some
proposition to do to gtk developers ;-)
Possible causes of crashes :
- Some access that are not thread-protected, but I haven't found any yet.
- The MainTree is not threadsafe (while filteredtree is.) Next step is
then to make the MainTree threadsafe, as well as the TreeNode !
- treemodel.py skipping some signals. Solving that involve manually queue
received signals and process them in the good order. (and not allowing to
skip a signal if it is missing)
- multiple signals sent for the same state. That happens for parent with
multiple paths. There are no easy fix for that but, from my tests, it looks
like this is a very rare crash.
Actions that need to be done :
+ Run the Tree_tester in a separate thread and have some race conditions
in our tests.
+ Make the MainTree and Treenode threadsafe. (it's mainly a matter of
putting a decorator on every function)
+ Solve the leak : purge states as soon as they are below the current
treemodel state.
+ Solve a non-existant node crash : really delete a node from the main
tree only when all the states where it appears are purged
+ Remove some functions from task.py (those that duplicate TreeNode
functions)
As usual, crashes report and traces are warmly welcome !
Lionel