← Back to team overview

gtg team mailing list archive

[Bug 590447] Re: Crash toggling off WorkView

 

There seems to be a race condition in the current task tree.

At some point, a parent node will advertize itself as having a child but
the child will still be in the virtualroot of the filtered tree.

On the other hand, the parent will not be added in the TaskTree, thus
not allowing us to put the child in another place than the root.

This race conditions is the root cause of every crash I've seen so far
with your data.


I did not identified where that race condition appear. As a workaround, I now remove from the virtual_root any node that is advertized as a child of another node. This (and many other fixes), allows you data to crash a lot less. But still, they crash, meaning that there's still an issue somewhere.

This is a very good stress test.

What would be good is to build some unit tests that load your data and
play a bit with trees and filters. That would allow us to catch easily
regression but also performances regressions (by having a test on the
total time needed to run the test).

-- 
Crash toggling off WorkView
https://bugs.launchpad.net/bugs/590447
You received this bug notification because you are a member of Gtg
contributors, which is subscribed to Getting Things GNOME!.

Status in Getting Things GNOME!: Confirmed

Bug description:
I ran gtg 0.3+bzr (from yesterday) on my (large) set of tasks ported from 0.2, and left it running overnight (no other changes to tasks had been done).  WorkView had been turned on.  Next morning I clicked WorkView and it crashed:

/home/bryce/src/gtg/new-scheduling/GTG/viewmanager/manager.py:207: GtkWarning: file /build/buildd/gtk+2.0-2.18.3/gtk/gtktreeview.c: line 5928 (validate_visible_area): assertion `has_child' failed.
There is a disparity between the internal view of the GtkTreeView,
and the GtkTreeModel.  This generally means that the model has changed
without letting the view know.  Any display from now on is likely to
be incorrect.

  gtk.main()
/home/bryce/src/gtg/new-scheduling/GTG/viewmanager/manager.py:207: GtkWarning: gtk_tree_model_sort_get_value: assertion `VALID_ITER (iter, tree_model_sort)' failed
  gtk.main()
/home/bryce/src/gtg/new-scheduling/GTG/viewmanager/manager.py:207: Warning: g_object_set_property: assertion `G_IS_VALUE (value)' failed
  gtk.main()
/home/bryce/src/gtg/new-scheduling/GTG/viewmanager/manager.py:207: Warning: g_value_unset: assertion `G_IS_VALUE (value)' failed
  gtk.main()
/home/bryce/src/gtg/new-scheduling/GTG/taskbrowser/tasktree.py:377: GtkWarning: gtk_tree_model_sort_get_value: assertion `VALID_ITER (iter, tree_model_sort)' failed
  value = model.get_value(iter, COL_TAGS)
Traceback (most recent call last):
  File "/home/bryce/src/gtg/new-scheduling/GTG/taskbrowser/tasktree.py", line 377, in _celldatafunction
    value = model.get_value(iter, COL_TAGS)
TypeError: unknown type (null)

/home/bryce/src/gtg/new-scheduling/GTG/tools/gtkcrashhandler.py:231: GtkWarning: file /build/buildd/gtk+2.0-2.18.3/gtk/gtktreeview.c: line 5928 (validate_visible_area): assertion `has_child' failed.
There is a disparity between the internal view of the GtkTreeView,
and the GtkTreeModel.  This generally means that the model has changed
without letting the view know.  Any display from now on is likely to
be incorrect.

  res = dialog.run()
/home/bryce/src/gtg/new-scheduling/GTG/tools/gtkcrashhandler.py:231: GtkWarning: gtk_tree_model_sort_get_value: assertion `VALID_ITER (iter, tree_model_sort)' failed
  res = dialog.run()
/home/bryce/src/gtg/new-scheduling/GTG/tools/gtkcrashhandler.py:231: Warning: g_object_set_property: assertion `G_IS_VALUE (value)' failed
  res = dialog.run()
/home/bryce/src/gtg/new-scheduling/GTG/tools/gtkcrashhandler.py:231: Warning: g_value_unset: assertion `G_IS_VALUE (value)' failed
  res = dialog.run()
Traceback (most recent call last):
  File "/home/bryce/src/gtg/new-scheduling/GTG/taskbrowser/tasktree.py", line 377, in _celldatafunction
    value = model.get_value(iter, COL_TAGS)
TypeError: unknown type (null)





References