| Index: build/android/buildbot/bb_device_status_check.py
 | 
| diff --git a/build/android/buildbot/bb_device_status_check.py b/build/android/buildbot/bb_device_status_check.py
 | 
| index 0a7cfd6c224b91e183e5a763f4bc27b4a90a3f66..ff9afc3fbbbc4eb48590924796f2fc17d99c409d 100755
 | 
| --- a/build/android/buildbot/bb_device_status_check.py
 | 
| +++ b/build/android/buildbot/bb_device_status_check.py
 | 
| @@ -245,9 +245,9 @@ def RecoverDevices(devices, blacklist):
 | 
|        logging.debug('%s is blacklisted, skipping recovery.', str(device))
 | 
|        return
 | 
|  
 | 
| -    if device in should_reboot_device:
 | 
| +    if str(device) in should_reboot_device:
 | 
|        try:
 | 
| -        device.WaitUntilFullyBooted()
 | 
| +        device.WaitUntilFullyBooted(retries=0)
 | 
|          return
 | 
|        except (device_errors.CommandTimeoutError,
 | 
|                device_errors.CommandFailedError):
 | 
| @@ -255,14 +255,33 @@ def RecoverDevices(devices, blacklist):
 | 
|                            'Attempting to recover.', str(device))
 | 
|  
 | 
|        try:
 | 
| -        device.Reboot()
 | 
| -        device.WaitUntilFullyBooted()
 | 
| +        try:
 | 
| +          device.Reboot(block=False, timeout=5, retries=0)
 | 
| +        except device_errors.CommandTimeoutError:
 | 
| +          logging.warning('Timed out while attempting to reboot %s normally.'
 | 
| +                          'Attempting alternative reboot.', str(device))
 | 
| +          # The device drops offline before we can grab the exit code, so
 | 
| +          # we don't check for status.
 | 
| +          device.adb.Root()
 | 
| +          device.adb.Shell('echo b > /proc/sysrq-trigger', expect_status=None,
 | 
| +                           timeout=5, retries=0)
 | 
| +      except device_errors.CommandFailedError:
 | 
| +        logging.exception('Failed to reboot %s.', str(device))
 | 
| +        if blacklist:
 | 
| +          blacklist.Extend([device.adb.GetDeviceSerial()])
 | 
| +      except device_errors.CommandTimeoutError:
 | 
| +        logging.exception('Timed out while rebooting %s.', str(device))
 | 
| +        if blacklist:
 | 
| +          blacklist.Extend([device.adb.GetDeviceSerial()])
 | 
| +
 | 
| +      try:
 | 
| +        device.WaitUntilFullyBooted(retries=0)
 | 
|        except device_errors.CommandFailedError:
 | 
|          logging.exception('Failure while waiting for %s.', str(device))
 | 
|          if blacklist:
 | 
|            blacklist.Extend([device.adb.GetDeviceSerial()])
 | 
|        except device_errors.CommandTimeoutError:
 | 
| -        logging.exception('Timed out while waiting for %s. ', str(device))
 | 
| +        logging.exception('Timed out while waiting for %s.', str(device))
 | 
|          if blacklist:
 | 
|            blacklist.Extend([device.adb.GetDeviceSerial()])
 | 
|  
 | 
| 
 |