GNOME Bugzilla – Bug 660687
roxterm X crashes with accessibility enabled
Last modified: 2018-02-10 04:33:46 UTC
When trying to run roxterm in an X server on archlinux it crashes when glib 2.30.0 is installed. I attached a trace file from gdb.
Created attachment 198002 [details] trace of roxterm X crash
Looks like an infinite move in accessible initialisation; what version of gtk is this ?
gtk 3.2.0
Benjamin, can you have a look ?
I have a same issue after upgrade Arch Linux. glib2 (2.28.8-1 -> 2.30.0-1) gtk3 (3.0.12-1 -> 3.2.0-1) I found setting "scrollbar_pos=0" (hide a scrollbar) in ~/.config/roxterm.sourceforge.net/Profiles/Default causes this problem. You can run ROXTerm with this entry to set "1". You have to edit the file by text editor, because selecting "Edit Current Profile" from menu (or run by: $ roxterm-config --display=:0 --EditProfile=Default) does not work with an error below. ** ERROR **: Unable to load GTK UI definitions: Invalid object type `GtkDevel'
Ugh. This happens because Gail has no idea who is responsible for reporting the parent property. There's 3 ways that are used inside GTK: 1) the parent sets itself on the children using atk_object_set_parent() 2) the get_parent vfunc gets the correct parent on demand 3) the child sets its parent Now if you mix case (1) for GtkNotebook and case (3) for VteTerminal, you get: - GtkNotebook creates a GtkNotebookAccessible - GtkNotebookPageAccessible gets created for all pages - each pages gets the accessible for its content to set parent on - getting the page for the content creates VteTerminalAccessible - VteTerminalAccessible gets parent widget's accessible to set it as its parent - GtkNotebook creates a GtkNotebookAccessible The correct fix is of course to use method (1) or (2) everywhere because no AtkObject can know its parent and it needs to be explicitly set. This is however slightly complicated because it means we need to find ways to ensure the correct parent when creating the accessible in gtk_widget_get_accessible(), which is not a trivial change at all.
Created attachment 198106 [details] [review] a11y: Hack around infinite loops in parent setting This is kind of a hack to get rid of infinite loops that occur when child accessibles try to set their parent upon creation but the parent accessible creates its children in the initialize vfunc. Because in that case, the parent will not have an accessible set when the child tries to access it, because it is still initializing itself. Which will cause a new accessible to be created.
I'm going to apply that patch to the GTK 3.2 branch, but not to git master. We need to find a proper solution there. Also: I think roxterm doesn't work with GTK 3.0 either if you enable accessibility. If somebody could confirm that, that'd be nice.
i have a confirmation that the commit fixes roxterm. no idea about accessibility...
Setting to NEW as per comment #8.
Company: Any plans to pick this up again?
We're moving to gitlab! As part of this move, we are closing bugs that haven't seen activity in more than 5 years. If this issue is still imporant to you and still relevant with GTK+ 3.22 or master, please consider creating a gitlab issue for it.