g-c-c crashes when you hover over the monitor in the dialog after applying a change in resolution. The cause is simple enough to pin down. After the change takes effect, a new GnomeRROutputInfo object appears to represent the monitor. foo-display-panel:paint_output stores the new output in the scroll area by calling foo_scroll_area_add_input_from_fill. Importantly, this is added to the *end* of a list of inputs which still contains a pointer to the the old (and deallocated) object. When you hover the mouse over the monitor, it scrollarea:process_event is called and determines that the mouse is inside in the old area and calls path->func (which is just foo-display-panel:on_output_event). This function tries to use the pointer to the old object and blows up. What needs to happen is the old area needs to be thrown out. It looks like foo_scroll_area_draw tries to do this by calling the clear_exposed_input_region function, but it does not succeed in this case.