Bug #14356


at-spi2-XXXXXX dirs proliferate in $HOME/.cache after MATE 1.26.x desktop update

Added by Tim Mooney over 2 years ago. Updated 3 months ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


Most of MATE desktop components were updated from the 1.24.x series to 1.26.x, with updates available from the 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


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 to gnome/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 from at-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 that lightdm is automatically starting at-spi2.
  • the versions of at-spi2-core and at-spi2-atk are significantly behind the current versions. It may be worth it to investigate updating those components.
Actions #1

Updated by Tim Mooney over 2 years 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:

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.

Actions #2

Updated by Tim Mooney over 2 years ago

I opened a github "issue" against mate-panel:


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.

Actions #3

Updated by Marcel Telka 3 months ago

  • Assignee deleted (OI Userland)

Also available in: Atom PDF