Comment 9 for bug 1870508

Revision history for this message
Marcus Tomlinson (marcustomlinson) wrote :

This crash looks to be due to an infinite loop between a child and parent in atk.

This is what I think is happening:

- The loops begins with a call to atk_component_get_extents() on a gtk notebook page.

- atk_component_get_extents() then calls iface->get_extents() [1]

- which translates to gtk_notebook_page_accessible_get_extents() [2]

- the gtk notebook page then calls atk_component_get_extents() on it's child [3]

- where the child's iface->get_extents() translates to atk_socket_component_real_get_extents() [4]

- in which the child calls atk_component_get_extents() again on its parent [5]

- - - -

[1] https://gitlab.gnome.org/GNOME/atk/-/blob/9118d44778e4d3a05810012cdcaa69eb4db2c389/atk/atkcomponent.c#L299

[2] https://gitlab.gnome.org/GNOME/gtk/-/blob/4ff578db10fe01de662e478ffd5f9ff205e89074/gtk/a11y/gtknotebookpageaccessible.c#L342

[3] https://gitlab.gnome.org/GNOME/gtk/-/blob/4ff578db10fe01de662e478ffd5f9ff205e89074/gtk/a11y/gtknotebookpageaccessible.c#L325

[4] https://gitlab.gnome.org/GNOME/atk/-/blob/e7276a0c47a0bd3cfb5654583ca3358ddf51a609/atk/atksocket.c#L104

[5] https://gitlab.gnome.org/GNOME/atk/-/blob/e7276a0c47a0bd3cfb5654583ca3358ddf51a609/atk/atksocket.c#L198