Comment 10 for bug 751025

Revision history for this message
Steve Langasek (vorlon) wrote :

Analysis so far:
 - bamf does not provide the g_io_module_query hook; therefore gio-querymodules does not add it to giomodule.cache.
 - g_io_modules_scan_all_in_directory(), which is called from _g_io_modules_ensure_loaded() against both the multiarch and pre-multiarch directories, falls back to scanning the directory and loading any additional modules with this code:

              /* Try to load and init types */
              if (g_type_module_use (G_TYPE_MODULE (module)))
                g_type_module_unuse (G_TYPE_MODULE (module)); /* Unload */
              else
                { /* Failure to load */
                  g_printerr ("Failed to load module: %s\n", path);
                  g_object_unref (module);
                  g_free (path);
                  continue;
                }

 - the other gio interface that probes directories, g_io_modules_load_all_in_directory(), takes a directory name so something calling this could fail to know about the multiarch directories; but so far I don't see where this code would be called from to cause this problem (it's not called in bamf itself).
 - manually adding libgiobamf.so to giomodule.cache is reported to correct the problem.
 - moving libgiobamf.so back to /usr/lib/gio/modules is *also* reported to correct the problem.

So I don't think we have a good understanding of why this doesn't work as-is. For the time being, the simplest solution is to adjust bamf to move the library back to /usr/lib/gio/modules as a workaround.