--- dbus-1.1.1.orig/dbus/dbus-internals.c	2007-06-14 21:38:50.000000000 +0100
+++ dbus-1.1.1/dbus/dbus-internals.c	2009-09-03 15:41:40.000000000 +0100
@@ -194,6 +194,7 @@ const char _dbus_no_memory_message[] = "
 static dbus_bool_t warn_initted = FALSE;
 static dbus_bool_t fatal_warnings = FALSE;
 static dbus_bool_t fatal_warnings_on_check_failed = TRUE;
+static FILE *warnings_fp = NULL;
 
 static void
 init_warnings(void)
@@ -221,6 +222,10 @@ init_warnings(void)
             }
         }
 
+      warnings_fp = fopen("/dev/kmsg", "w");
+      if (!warnings_fp)
+	warnings_fp = stderr;
+
       warn_initted = TRUE;
     }
 }
@@ -244,12 +249,12 @@ _dbus_warn (const char *format,
     init_warnings ();
   
   va_start (args, format);
-  vfprintf (stderr, format, args);
+  vfprintf (warnings_fp, format, args);
+  fflush(warnings_fp);
   va_end (args);
 
   if (fatal_warnings)
     {
-      fflush (stderr);
       _dbus_abort ();
     }
 }
@@ -274,12 +279,12 @@ _dbus_warn_check_failed(const char *form
   fprintf (stderr, "process %lu: ", _dbus_pid_for_log ());
   
   va_start (args, format);
-  vfprintf (stderr, format, args);
+  vfprintf (warnings_fp, format, args);
+  fflush(warnings_fp);
   va_end (args);
 
   if (fatal_warnings_on_check_failed)
     {
-      fflush (stderr);
       _dbus_abort ();
     }
 }
