| Index: client/cros/login.py
 | 
| diff --git a/client/cros/login.py b/client/cros/login.py
 | 
| index fa5a8ddadafd8e462d755aac6ade7cfc724196ef..60ad0371ca5a8c5921aa80ddd262c30863433b1c 100644
 | 
| --- a/client/cros/login.py
 | 
| +++ b/client/cros/login.py
 | 
| @@ -11,6 +11,11 @@ from autotest_lib.client.common_lib import error
 | 
|  
 | 
|  _DEFAULT_TIMEOUT = 30
 | 
|  
 | 
| +# Log messages used to signal when we're in a logout situation. Used to detect
 | 
| +# crashes by cros_ui_test.UITest.
 | 
| +LOGOUT_ATTEMPT_MSG = 'cros/login.py: Attempting logout...'
 | 
| +LOGOUT_COMPLETE_MSG = 'cros/login.py: Logout complete.'
 | 
| +
 | 
|  
 | 
|  class TimeoutError(error.TestError):
 | 
|      """Error raised when we time out while waiting on a condition."""
 | 
| @@ -181,24 +186,31 @@ def attempt_logout(timeout=_DEFAULT_TIMEOUT):
 | 
|      if not logged_in():
 | 
|          raise UnexpectedCondition('Already logged out')
 | 
|  
 | 
| -    oldpid = __get_session_manager_pid()
 | 
| -
 | 
| -    # Mark /var/log/messages now; we'll run through all subsequent log messages
 | 
| -    # if we couldn't TERM and restart the session manager.
 | 
| -
 | 
| -    log_reader = cros_logging.LogReader()
 | 
| -    log_reader.set_start_by_current()
 | 
| -
 | 
| -    # Gracefully exiting the session manager causes the user's session to end.
 | 
| -    utils.system('pkill -TERM -o ^%s$' % constants.SESSION_MANAGER)
 | 
| +    # Log what we're about to do to /var/log/messages. Used to log crashes later
 | 
| +    # in cleanup by cros_ui_test.UITest.
 | 
| +    utils.system('logger "%s"' % LOGOUT_ATTEMPT_MSG)
 | 
|  
 | 
| -    wait_for_condition(
 | 
| -        condition=lambda: __session_manager_restarted(oldpid),
 | 
| -        timeout_msg='Timed out waiting for logout',
 | 
| -        timeout=timeout,
 | 
| -        process='session_manager',
 | 
| -        log_reader=log_reader,
 | 
| -        crash_msg='session_manager crashed while shutting down.')
 | 
| +    try:
 | 
| +      oldpid = __get_session_manager_pid()
 | 
| +
 | 
| +      # Mark /var/log/messages now; we'll run through all subsequent log
 | 
| +      # messages if we couldn't TERM and restart the session manager.
 | 
| +
 | 
| +      log_reader = cros_logging.LogReader()
 | 
| +      log_reader.set_start_by_current()
 | 
| +
 | 
| +      # Gracefully exiting the session manager causes the user's session to end.
 | 
| +      utils.system('pkill -TERM -o ^%s$' % constants.SESSION_MANAGER)
 | 
| +
 | 
| +      wait_for_condition(
 | 
| +          condition=lambda: __session_manager_restarted(oldpid),
 | 
| +          timeout_msg='Timed out waiting for logout',
 | 
| +          timeout=timeout,
 | 
| +          process='session_manager',
 | 
| +          log_reader=log_reader,
 | 
| +          crash_msg='session_manager crashed while shutting down.')
 | 
| +    finally:
 | 
| +      utils.system('logger "%s"' % LOGOUT_COMPLETE_MSG)
 | 
|  
 | 
|  
 | 
|  def wait_for_browser(timeout=_DEFAULT_TIMEOUT):
 | 
| 
 |