Господа... :) Столкнулся с довольно неприятной проблемой. Суть ее сводится к тому, что если в обработчике сигнала "changed" GtkTreeSelection выполнить gtk_widget_destroy для GtkTreeView этого GtkTreeSelection'а, то приложение падает с Segmentation fault'ом. Насколько я понимаю, это происходит из-за того, что GTK после вызова обработчика производит какие-то действия с GtkTreeView/GtkTreeSelection/GtkTreeModel, а т. к. я уничтожаю GtkTreeView в обработчике сигнала, то GTK обращается по старому указателю на уже несуществующий объект. Может быть я что-то не так делаю? Подскажите пожалуйста, как можно избежать данной ошибки. Вот пример приложения, которое аварийно завершается, если щелкнуть мышью по строке GtkTreeView: #include <gtk/gtk.h> GtkWidget *treeview; void change_callback(GtkTreeSelection *treeselection, gpointer user_data) { gtk_widget_destroy(treeview); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkTreeIter iter; GtkTreeModel *items_model; GtkCellRenderer *renderer; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); items_model = GTK_TREE_MODEL(gtk_list_store_new(1, G_TYPE_INT)); gtk_list_store_append(GTK_LIST_STORE(items_model), &iter); gtk_list_store_set(GTK_LIST_STORE(items_model), &iter, 0, 1, -1); treeview = gtk_tree_view_new_with_model(items_model); g_object_unref (items_model); renderer = gtk_cell_renderer_combo_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, "Name", renderer, "text", 0, NULL); g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview))) , "changed", G_CALLBACK(change_callback), NULL); gtk_box_pack_start(GTK_BOX(vbox), treeview, FALSE, FALSE, 0); gtk_widget_show_all (window); gtk_main(); }