Я думаю, что нашел решение.Проблема была в:
tree = g_tree_new( g_str_equal );
В официальном учебнике сказано, что это один из GCompareFunc по умолчанию, поэтому я решил использовать его (кстати, я успешно использую его в GHashTable без проблем),Но это беда.Правильная инициализация:
tree = g_tree_new((GCompareFunc)g_ascii_strcasecmp);
И вуаля!Оно работает!Спасибо учебникам IBM.