When proper introspection is available, the program no longer prints a long list of messages to stderr. Previously, stderr was redirected to a log file for this reason. With a proper hal.conf for dbus, the log file is no longer needed and no messages are printed normally to stderr. This also means we can use stderr to print our own error messages instead of working around the problem by printing them to stdout. Minor changes to the code remove the redirection of stderr to the log file and allow us to use the construction sys.exit(ERROR_MESSAGE) instead of print ERROR_MESSAGE sys.exit(1) As an additional benefit, we no longer have to try to print the backtrace to stdout. We can let it go to stderr too. The try/except block has been replaced with the classic if __name__ == '__main__' condition.