Index: gdm-2.20.3/daemon/gdm.c
===================================================================
--- gdm-2.20.3.orig/daemon/gdm.c	2008-01-07 20:39:37.000000000 +0100
+++ gdm-2.20.3/daemon/gdm.c	2008-01-09 18:44:49.000000000 +0100
@@ -1081,6 +1081,12 @@
 				d->sleep_before_run = 3;
 			} else if (d->x_faileds >= 3) {
 				gdm_debug ("gdm_child_action: dealing with X crashes");
+				if ( gdm_config_value_get_bool (GDM_KEY_NOXKEEPSCRASHING)) {
+					gdm_display_unmanage (d);
+					gdm_start_first_unborn_local (3 /* delay */);
+					break;
+				}
+
 				if ( ! deal_with_x_crashes (d)) {
 					gdm_debug ("gdm_child_action: Aborting display");
 					/* an original way to deal with these things:
Index: gdm-2.20.3/daemon/gdm-daemon-config-keys.h
===================================================================
--- gdm-2.20.3.orig/daemon/gdm-daemon-config-keys.h	2008-01-07 20:39:37.000000000 +0100
+++ gdm-2.20.3/daemon/gdm-daemon-config-keys.h	2008-01-09 18:43:44.000000000 +0100
@@ -145,6 +145,7 @@
 #define GDM_KEY_CONFIGURATOR "daemon/Configurator=" SBINDIR "/gdmsetup --disable-sound --disable-crash-dialog"
 #define GDM_KEY_CONFIG_AVAILABLE "greeter/ConfigAvailable=true"
 #define GDM_KEY_CHOOSER_BUTTON "greeter/ChooserButton=true"
+#define GDM_KEY_NOXKEEPSCRASHING "daemon/NoXKeepsCrashing=false"
 #define GDM_KEY_TITLE_BAR "greeter/TitleBar=true"
 #define GDM_DEFAULT_WELCOME_MSG "Welcome"
 #define GDM_DEFAULT_REMOTE_WELCOME_MSG "Welcome to %n"
Index: gdm-2.20.3/gui/greeter/greeter_configuration.h
===================================================================
--- gdm-2.20.3.orig/gui/greeter/greeter_configuration.h	2008-01-07 20:39:03.000000000 +0100
+++ gdm-2.20.3/gui/greeter/greeter_configuration.h	2008-01-09 18:43:44.000000000 +0100
@@ -25,6 +25,7 @@
 extern gboolean GdmShowXtermFailsafeSession;
 extern gboolean GdmShowLastSession;
 extern gboolean GdmSystemMenu;
+extern gboolean GdmNoXKeepsCrashing;
 extern gboolean GdmConfigAvailable;
 extern gboolean GdmChooserButton;
 extern gchar *GdmHalt;
