| Index: devil/devil/android/tools/device_recovery.py | 
| diff --git a/devil/devil/android/tools/device_recovery.py b/devil/devil/android/tools/device_recovery.py | 
| index 57857b1ed15160a90b9b6de82ab99195cc6f1dd5..80c78d25070496f5d4b7885f92432f43ca1f5605 100755 | 
| --- a/devil/devil/android/tools/device_recovery.py | 
| +++ b/devil/devil/android/tools/device_recovery.py | 
| @@ -64,7 +64,8 @@ def RecoverDevice(device, blacklist, should_reboot=lambda device: True): | 
| try: | 
| device.WaitUntilFullyBooted(retries=0) | 
| except (device_errors.CommandTimeoutError, | 
| -            device_errors.CommandFailedError): | 
| +            device_errors.CommandFailedError, | 
| +            device_errors.DeviceUnreachableError): | 
| logger.exception('Failure while waiting for %s. ' | 
| 'Attempting to recover.', str(device)) | 
| try: | 
| @@ -83,7 +84,8 @@ def RecoverDevice(device, blacklist, should_reboot=lambda device: True): | 
| # exception willbe thrown at that level. | 
| device.adb.Shell('echo b > /proc/sysrq-trigger', expect_status=None, | 
| timeout=5, retries=0) | 
| -    except device_errors.CommandFailedError: | 
| +    except (device_errors.CommandFailedError, | 
| +            device_errors.DeviceUnreachableError): | 
| logger.exception('Failed to reboot %s.', str(device)) | 
| if blacklist: | 
| blacklist.Extend([device.adb.GetDeviceSerial()], | 
| @@ -97,7 +99,8 @@ def RecoverDevice(device, blacklist, should_reboot=lambda device: True): | 
| try: | 
| device.WaitUntilFullyBooted( | 
| retries=0, timeout=device.REBOOT_DEFAULT_TIMEOUT) | 
| -    except device_errors.CommandFailedError: | 
| +    except (device_errors.CommandFailedError, | 
| +            device_errors.DeviceUnreachableError): | 
| logger.exception('Failure while waiting for %s.', str(device)) | 
| if blacklist: | 
| blacklist.Extend([device.adb.GetDeviceSerial()], | 
|  |