gnome 2.12 problems




As stated in a previous message, I installed gnome 2.12.1 from scratch (as in Linux From Scratch) and am having problems with gnome-control-center and gnome-theme-manager not working. I have done some more investigating and it seems part of the problem is with gnome-settings-daemon not starting. As can be seen there is a null string being passed to the function in glib g_utf8_validate, which appears to be from a empty value in BG_PREFERENCES_PICTURE_FILENAME. I'm wondering if this is a bug?

(gdb) run
Starting program: /usr/local/gnome212/libexec/gnome-settings-daemon [Thread debugging using libthread_db enabled]
[New Thread -1228441152 (LWP 12203)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1228441152 (LWP 12203)]
0xb749ad00 in fast_validate (str=0x0) at gutf8.c:1531
1531    gutf8.c: No such file or directory.
        in gutf8.c
(gdb) where
#0  0xb749ad00 in fast_validate (str=0x0) at gutf8.c:1531
#1  0xb749af7c in IA__g_utf8_validate (str=0x0, max_len=-1, end=0x0)
    at gutf8.c:1697
#2  0x08064f60 in bg_preferences_load (prefs=0x80af050) at preferences.c:248
#3  0x08058aef in gnome_settings_background_init (client=0x80a9ce8)
    at gnome-settings-background.c:89
#4  0x080554de in gnome_settings_daemon_new () at gnome-settings-daemon.c:353
#5  0x


void
bg_preferences_load (BGPreferences *prefs)
{
        GConfClient *client;
        GError      *error = NULL;
        char *tmp;

        g_return_if_fail (prefs != NULL);
        g_return_if_fail (IS_BG_PREFERENCES (prefs));

        client = gconf_client_get_default ();

        prefs->enabled = gconf_client_get_bool (client, BG_PREFERENCES_DRAW_BACK
GROUND, &error);
        tmp = ' (client, BG_PREFERENCES_PICTURE_FILENAME,
&error);
        if (g_utf8_validate (tmp, -1, NULL) &&
            g_file_test (tmp, G_FILE_TEST_EXISTS))
          prefs->wallpaper_filename = g_strdup (tmp);
        else
          prefs->wallpaper_filename = g_filename_from_utf8 (tmp, -1, NULL,
                                                            NULL, NULL);
        g_free (tmp);


gchar*
gconf_client_get_string(GConfClient* client, const gchar* key,
                        GError** err)
{
  GError* error = NULL;
  GConfValue* val;

  g_return_val_if_fail (err == NULL || *err == NULL, NULL);

  val = gconf_client_get (client, key, err);

  if (val != NULL)
    {
      gchar* retval = NULL;

      g_assert(error == NULL);

      if (check_type (key, val, GCONF_VALUE_STRING, &error))
        retval = gconf_value_steal_string (val);
      else
        handle_error (client, error, err);

      gconf_value_free (val);

      return retval;
    }
  else
    {
      if (error != NULL)
        handle_error (client, error, err);
      return NULL;
    }
}



Fred



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]