GdkPixbuf 컬럼이 있는 gtk_list_store_append 하면 Segmentation fault and Crush, GtkListStore와 GdkPixbuf 어떤 관계성?

ivsp의 이미지

GtkIconView 사용하기 위해 GtkTreeModel 타입으로 GtkListStore를 사용하고 있습니다.
G_TYPE_STRING, GDK_TYPE_PIXBUF 두 타입의 컬럼을 지정해서 gtk_list_store_new로 생성된 view입니다.
문제는 어떤 이벤트 발생시 signal 핸들러에서 이 list store에 새 row를 추가하면 segmentation fault 에러나고 죽습니다.
코드는 아래와 같습니다.
코드에서 보듯이 create_iconview에서 최초 update_store를 호출하여 이곳에서 하나의 icon 을 등록해줍니다.
처음 프로그램 실행하면 잘 나오나, item을 double click 해서 item_activated signal 핸들러 호출되고
여기 안에서 udpate_store 두번째 호출되면서 이런 문제가 발생됩니다.
GDK_TYPE_PIXBUF 컬럼을 제거하고 하면 아무 문제가 없는 것으로 보아 GdkPixbuf와 GtkListStore에 gtk_list_store_append, gtk_list_store_set 할때
어떤 관련성이 있는것 같습니다.
기술적 검토를 해보려고 해도 GTK Reference가 너무도 미비하군요
과연 문제의 원인은 무엇인가요?

[b]GdkPixbuf* pixbuf;

/* list store 갱신 */
void update_store(GtkListStore* store)
{
GtkTreeIter iter;
gtk_list_store_clear (store);
gchar* subs;

subs = g_strdup("FisrtIcon");
gtk_list_store_append(store,&iter);
gtk_list_store_set(store, &iter,
0,subs,
1,pixbuf, -1);

g_free(subs);
}

/** item-activated signal 핸들러 */
static void
item_activated (GtkIconView *icon_view,
GtkTreePath *tree_path,
gpointer user_data)
{
GtkListStore *store;
gchar *path;
GtkTreeIter iter;
gboolean is_dir;

store = GTK_LIST_STORE (user_data);
update_store(store); /** list store 갱신을 위해 호출 */

}

/** Icon View 생성 */
void create_iconview(void)
{
GtkWidget *iconview, *scrolled_window;
GtkListStore *store;
GtkCellRenderer *cell, *rendertext;

iconview = gtk_icon_view_new ();

gtk_icon_view_set_grid_type (GTK_ICON_VIEW (iconview), GRID_TBYT);
gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (iconview), 102);
gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (iconview), 57);
gtk_icon_view_set_margin (GTK_ICON_VIEW (iconview), 40);

pixbuf = gdk_pixbuf_new_from_file ("mypic.png", NULL);

store = gtk_list_store_new(2,G_TYPE_STRING,GDK_TYPE_PIXBUF);
update_store(store);

gtk_icon_view_set_model (GTK_ICON_VIEW (iconview), GTK_TREE_MODEL(store));
gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (iconview), GTK_SELECTION_MULTIPLE);
g_object_unref (store);

// Pixbuf new(Cell BG)
cell = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), cell, FALSE);
g_object_set (cell, "follow-state", TRUE, NULL);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview),
cell, "pixbuf", 1, NULL);
gtk_cell_renderer_pixbuf_set_is_scale((GtkCellRendererPixbuf *)cell,TRUE);
gtk_cell_renderer_pixbuf_set_scale_sb((GtkCellRendererPixbuf *)cell,TRUE);

// Text new
rendertext = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(iconview), rendertext, FALSE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(iconview), rendertext, "text", 0, NULL);

g_object_set (rendertext, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
gtk_cell_renderer_set_fixed_size(rendertext,127,54);

gtk_icon_view_select_at_pos( GTK_ICON_VIEW(iconview),0 ,0);

g_signal_connect (iconview, "item_activated",
G_CALLBACK (item_activated), store);

scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

gtk_container_add (GTK_CONTAINER (scrolled_window), iconview);
return scrolled_window;
}