After debugging the translated c sources, I found an error.
vala translates
public void render_value (Gtk.TreeViewColumn column, Gtk.CellRendererText cell, Gtk.TreeModel model, Gtk.TreeIter iter)
from your code to the next c equivalent
void application_render_value (Application* self, GtkTreeViewColumn* column, GtkCellRendererText* cell, GtkTreeModel* model, GtkTreeIter* iter)
I compared this to reference documents.
There, the signature of the data function is defined as follows
void (*GtkCellLayoutDataFunc) (GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data);
As for the method that you implemented, this means that the arguments are shifted one right. Thus, for your func / method functions, the following applies:
column actually a cell renderercell is a tree modelmodel is an iterator anditer is the data that is passed to the function / method
If you change the declaration of a function / data method to
public void render_value (Gtk.CellRendererText cell, Gtk.TreeModel model, Gtk.TreeIter iter, Object data)
everything should work fine.
Perhaps the reason for this is because CellLayoutDataFunc is defined as public delegate void . But since I don't know anything about vala , this is just a hunch. If this is not the case, you can post it on the appropriate vala mailing list.