cpu is 100% it's hard to me to figure where the problem is. after some debuging i found that execution is not returning from gtk_scrolled_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation) gtk+2.0-2.16.0/gtk/gtkscrolledwindow.c:1337 more precisely the do while loop where previous_hvis = 1 and previous_vvis = 1 │1416 do │ │1417 { │ >│1418 gtk_scrolled_window_relative_allocation (widget, &relative_allocation); │ │1419 │ │1420 child_allocation.x = relative_allocation.x + allocation->x; │ │1421 child_allocation.y = relative_allocation.y + allocation->y; │ │1422 child_allocation.width = relative_allocation.width; │ │1423 child_allocation.height = relative_allocation.height; │ │1424 │ │1425 previous_hvis = scrolled_window->hscrollbar_visible; │ │1426 previous_vvis = scrolled_window->vscrollbar_visible; │ │1427 │ │1428 gtk_widget_size_allocate (bin->child, &child_allocation); │ │1429 │ │1430 /* If, after the first iteration, the hscrollbar and the │ │1431 * vscrollbar flip visiblity, then we need both. │ │1432 */ │ │1433 if (count && │ │1434 previous_hvis != scrolled_window->hscrollbar_visible && │ │1435 previous_vvis != scrolled_window->vscrollbar_visible) │ │1436 { │ │1437 scrolled_window->hscrollbar_visible = TRUE; │ │1438 scrolled_window->vscrollbar_visible = TRUE; │ │1439 │ │1440 /* a new resize is already queued at this point, │ │1441 * so we will immediatedly get reinvoked │ │1442 */ │ │1443 return; │ │1444 } │ │1445 │ │1446 count++; │ │1447 } │ │1448 while (previous_hvis != scrolled_window->hscrollbar_visible || │ │1449 previous_vvis != scrolled_window->vscrollbar_visible);