Bug #14356
openat-spi2-XXXXXX dirs proliferate in $HOME/.cache after MATE 1.26.x desktop update
0%
Description
Most of MATE desktop components were updated from the 1.24.x series to 1.26.x, with updates available from the openindiana.org publisher after about 30-Dec-2021.
Jason Martin reported (Thanks Jason!) via openindiana-discuss that after updating to MATE 1.26.x, there were many sockets being created in ~/.cache/at-spi2-XXXXXX/ directories. This doesn't appear to have been happening with MATE 1.24.x.
It may be be some incompatibility between MATE 1.26.x and some of the GNOME Accessibility Toolkit's "Assistive Technology Service Provider Interface" (at-spi) subsystem.
As a workaround, if you don't need assistive technology, you can add
NO_AT_BRIDGE=1; export NO_AT_BRIDGE
to your ~/.profile
That is a workaround, hopefully we'll be able to identify a fix.
After some brief investigation I can say that- a couple of MATE components use
gnome/accessibility/at-spi2-core
directly, but most don't. Instead most MATE components link tognome/accessibility/at-spi2-atk
, so we should probably focus debugging there first. - after looking at
/etc/xdg/autostart/at-spi-dbus-bus.desktop
it appears there are multiple problems with that file (which comes fromat-spi2-core
) that make it incompatible with MATE (as shipped). However, it doesn't matter, because of the next item. - it doesn't currently matter that
/etc/xdg/autostart/at-spi-dbus-bus.desktop
probably isn't doing what it's supposed to, because it appears thatlightdm
is automatically starting at-spi2. - the versions of
at-spi2-core
andat-spi2-atk
are significantly behind the current versions. It may be worth it to investigate updating those components.
Updated by Tim Mooney about 1 year ago
A little more information to add to this:
It definitely appears that it's happening in at-spi2-atk
, in particular I found the following code in at-spi2-atk-2.24.1/atk-adaptor/bridge.c
:
int
spi_atk_create_socket (SpiBridge *app)
{
#ifndef DISABLE_P2P
DBusServer *server;
DBusError error;
const gchar *user_runtime_dir = g_get_user_runtime_dir ();
if (g_mkdir_with_parents (user_runtime_dir, 0700) != 0)
return -1;
if (getuid () != 0)
{
app->app_tmp_dir = g_build_filename (user_runtime_dir,
"at-spi2-XXXXXX", NULL);
if (!g_mkdtemp (app->app_tmp_dir))
{
g_free (app->app_tmp_dir);
app->app_tmp_dir = NULL;
return -1;
}
}
(additional code in that function not shown).
Additionally, there is code in the same file to clean up the directory and the socket, including an atexit(remove_socket)
call, but it looks like it's getting missed in a few cases. When you log out of MATE, most of the directories and sockets and temp directories do go away, but a few are effectively leaked, so that every time you log in and log out, a few more at-spi2-XXXXXX
directories are left behind.
Updated by Tim Mooney about 1 year ago
I opened a github "issue" against mate-panel:
[[https://github.com/mate-desktop/mate-panel/issues/1288]]
There are over a dozen components involved that are creating these directories, so it could have been against any of them, but mate-panel is one of the "high profile" components that is exhibiting the behavior.