← Back to team overview

gtg-contributors team mailing list archive

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