# Buggy code
def _UpdateStatus(
    self, status, display_name, number_of_consumed_sources, storage_writer, force=False
):
    """Updates the processing status.

    Args:
      status (str): human readable status of the processing e.g. 'Idle'.
      display_name (str): human readable of the file entry currently being
          processed.
      number_of_consumed_sources (int): number of consumed sources.
      storage_writer (StorageWriter): storage writer for a session storage.
      force (Optional[bool]): True if the update should be forced ignoring
          the last status update time.
    """
    current_timestamp = time.time()
    if not force and current_timestamp < (
        self._last_status_update_timestamp + self._STATUS_UPDATE_INTERVAL
    ):
        return

    if status == definitions.PROCESSING_STATUS_IDLE:
        status = definitions.PROCESSING_STATUS_RUNNING

    used_memory = self._process_information.GetUsedMemory()

    self._processing_status.UpdateForemanStatus(
        self._name,
        status,
        self._pid,
        used_memory,
        display_name,
        number_of_consumed_sources,
        storage_writer.number_of_event_sources,
        0,
        storage_writer.number_of_events,
        0,
        0,
        0,
        storage_writer.number_of_errors,
        0,
        0,
    )

    if self._status_update_callback:
        self._status_update_callback(self._processing_status)

    self._last_status_update_timestamp = current_timestamp


# Traceback (TypeError)
Exception in thread Status update:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/plaso-1.5.2.post20170119-py2.7.egg/plaso/multi_processing/task_engine.py", line 509, in _StatusUpdateThreadMain
self._status_update_callback(self._processing_status)
File "/usr/local/lib/python2.7/dist-packages/plaso-1.5.2.post20170119-py2.7.egg/plaso/cli/status_view_tool.py", line 149, in _PrintStatusUpdate
status_row = self._FormatStatusTableRow(worker_status)
File "/usr/local/lib/python2.7/dist-packages/plaso-1.5.2.post20170119-py2.7.egg/plaso/cli/status_view_tool.py", line 111, in _FormatStatusTableRow
used_memory = self._FormatSizeInUnitsOf1024(process_status.used_memory)
File "/usr/local/lib/python2.7/dist-packages/plaso-1.5.2.post20170119-py2.7.egg/plaso/cli/status_view_tool.py", line 63, in _FormatSizeInUnitsOf1024
used_memory_1024 = float(size)
TypeError: float() argument must be a string or a number

2017-01-23 06:00:55,183 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:07,371 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:23,611 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:29,723 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:41,507 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:47,519 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:01:54,583 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:02:11,607 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.
2017-01-23 06:02:24,095 [WARNING] (MainProcess) PID:15653 <zeromq_queue> main_task_queue timeout waiting for a request.

# Fixed code
def _UpdateStatus(
    self, status, display_name, number_of_consumed_sources, storage_writer, force=False
):
    """Updates the processing status.

    Args:
      status (str): human readable status of the processing e.g. 'Idle'.
      display_name (str): human readable of the file entry currently being
          processed.
      number_of_consumed_sources (int): number of consumed sources.
      storage_writer (StorageWriter): storage writer for a session storage.
      force (Optional[bool]): True if the update should be forced ignoring
          the last status update time.
    """
    current_timestamp = time.time()
    if not force and current_timestamp < (
        self._last_status_update_timestamp + self._STATUS_UPDATE_INTERVAL
    ):
        return

    if status == definitions.PROCESSING_STATUS_IDLE:
        status = definitions.PROCESSING_STATUS_RUNNING

    used_memory = self._process_information.GetUsedMemory() or 0

    self._processing_status.UpdateForemanStatus(
        self._name,
        status,
        self._pid,
        used_memory,
        display_name,
        number_of_consumed_sources,
        storage_writer.number_of_event_sources,
        0,
        storage_writer.number_of_events,
        0,
        0,
        0,
        storage_writer.number_of_errors,
        0,
        0,
    )

    if self._status_update_callback:
        self._status_update_callback(self._processing_status)

    self._last_status_update_timestamp = current_timestamp