diff -ur gdm-2.20.3/daemon/display.c gdm-2.20.3.new/daemon/display.c
--- gdm-2.20.3/daemon/display.c	2008-01-07 20:39:37.000000000 +0100
+++ gdm-2.20.3.new/daemon/display.c	2008-02-13 15:00:36.000000000 +0100
@@ -331,6 +331,8 @@
     pid_t pid;
     int fds[2];
 
+    gdm_debug ("Test #3 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
     if (!d) 
 	return FALSE;
 
diff -ur gdm-2.20.3/daemon/gdm.c gdm-2.20.3.new/daemon/gdm.c
--- gdm-2.20.3/daemon/gdm.c	2008-01-07 20:39:37.000000000 +0100
+++ gdm-2.20.3.new/daemon/gdm.c	2008-02-13 15:00:36.000000000 +0100
@@ -139,6 +139,7 @@
 static GdmLogoutAction safe_logout_action = GDM_LOGOUT_ACTION_NONE;
 
 /* set in the main function */
+
 gchar **stored_argv = NULL;
 int stored_argc     = 0;
 
@@ -232,6 +233,7 @@
 }
 
 static void
+
 gdm_start_first_unborn_local (int delay)
 {
 	GSList *li;
@@ -242,6 +244,8 @@
 	/* tickle the random stuff */
 	gdm_random_tick ();
 
+	gdm_debug ("Test #2 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	for (li = displays; li != NULL; li = li->next) {
 		GdmDisplay *d = li->data;
 
@@ -1553,6 +1557,9 @@
 	/* preprocess the arguments to support the xdm style -nodaemon
 	 * option
 	 */
+	
+	gdm_debug ("Test #1 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS")); 
+	 
 	for (i = 0; i < argc; i++) {
 		if (strcmp (argv[i], "-nodaemon") == 0)
 			argv[i] = (char *) "--nodaemon";
diff -ur gdm-2.20.3/daemon/slave.c gdm-2.20.3.new/daemon/slave.c
--- gdm-2.20.3/daemon/slave.c	2008-02-13 15:01:14.000000000 +0100
+++ gdm-2.20.3.new/daemon/slave.c	2008-02-13 15:04:23.000000000 +0100
@@ -831,6 +831,9 @@
 	sigaddset (&mask, SIGCHLD);
 	sigaddset (&mask, SIGUSR2);
 	sigaddset (&mask, SIGUSR1); /* normally we ignore USR1 */
+	
+	gdm_debug ("Test #4 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	if ( ! SERVER_IS_LOCAL (display) && pinginterval > 0) {
 		sigaddset (&mask, SIGALRM);
 	}
@@ -3577,6 +3580,9 @@
 #endif
 
 	gdm_unset_signals ();
+
+	gdm_debug ("Test #5 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	if G_UNLIKELY (setsid () < 0)
 		/* should never happen */
 		gdm_error (_("%s: setsid () failed: %s!"),
@@ -3637,6 +3643,8 @@
 	old_system_data_dirs = g_getenv ("XDG_DATA_DIRS") ?
 			       g_getenv ("XDG_DATA_DIRS") :
 			       "/usr/local/share/:/usr/share/";
+			       
+	gdm_debug ("Test #6 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
 
 	ve_clearenv ();
 
@@ -3654,6 +3662,9 @@
 		g_setenv ("XDG_SESSION_COOKIE", ck_session_cookie, TRUE);
 	}
 #endif
+
+	gdm_debug ("Test #6.1 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	g_setenv ("PWD", home_dir, TRUE);
 	g_setenv ("GDMSESSION", session, TRUE);
 	g_setenv ("DESKTOP_SESSION", session, TRUE);
@@ -3674,6 +3685,8 @@
 		g_setenv ("GDM_XSERVER_LOCATION", "unknown", TRUE);
 	}
 
+	gdm_debug ("Test #6.2 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	if (gnome_session != NULL)
 		g_setenv ("GDM_GNOME_SESSION", gnome_session, TRUE);
 
@@ -3682,6 +3695,8 @@
 		g_setenv ("PATH", gdm_daemon_config_get_value_string (GDM_KEY_ROOT_PATH), TRUE);
 	else
 		g_setenv ("PATH", gdm_daemon_config_get_value_string (GDM_KEY_PATH), TRUE);
+	
+	gdm_debug ("Test #6.3 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
 
 	/*
 	 * Install GDM desktop files to a non-default desktop file 
@@ -3695,12 +3710,14 @@
 
 		new_system_data_dirs = g_build_path (":",
 			 old_system_data_dirs, DATADIR "/gdm/", NULL);
-
+		gdm_debug ("Test #7 - new value is %s", new_system_data_dirs);
 		g_setenv ("XDG_DATA_DIRS", new_system_data_dirs, TRUE);
 
 		g_free (new_system_data_dirs);
 	}
 
+	gdm_debug ("Test #6.4 - The XDG_DATA_DIRS value is %s", g_getenv ("XDG_DATA_DIRS"));
+
 	/* Eeeeek, this no lookie as a correct language code,
 	 * just use the system default */
 	if G_UNLIKELY ( ! ve_string_empty (language) &&
Sólo en gdm-2.20.3.new/daemon: slave.c~
