broken data stream when reading image file

Bug report

Summary

The scan crashed with an error, but the server and camera were still live. It was a couple of hundred images into a scan

I've only seen it once.

Traceback
broken data stream when reading image file 
broken data stream when reading image file
Traceback (most recent call last):
  File "/var/openflexure/application/openflexure-microscope-server/.venv/lib/python3.11/site-packages/labthings_fastapi/actions/__init__.py", line 181, in run
    ret = action.__get__(thing)(**kwargs, **self.dependencies)
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 169, in sample_scan
    raise e
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 160, in sample_scan
    self._run_scan()
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 65, in scan_running_wrapper
    return method(self, *args, **kwargs)
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 438, in _run_scan
    raise e
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 414, in _run_scan
    self._main_scan_loop()
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 65, in scan_running_wrapper
    return method(self, *args, **kwargs)
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/smart_scan.py", line 506, in _main_scan_loop
    capture_image, bg_message = self._cam.image_is_sample()
  File "/var/openflexure/application/openflexure-microscope-server/.venv/lib/python3.11/site-packages/labthings_fastapi/client/in_server.py", line 105, in action_method
    return getattr(self._wrapped_thing, name)(**kwargs_and_deps)
  File "/var/openflexure/application/openflexure-microscope-server/src/openflexure_microscope_server/things/camera/__init__.py", line 540, in image_is_sample
    current_image = np.array(Image.open(current_image.open()))
  File "/var/openflexure/application/openflexure-microscope-server/.venv/lib/python3.11/site-packages/PIL/Image.py", line 742, in __array_interface__
    new["data"] = self.tobytes()
  File "/var/openflexure/application/openflexure-microscope-server/.venv/lib/python3.11/site-packages/PIL/Image.py", line 802, in tobytes
    self.load()
  File "/var/openflexure/application/openflexure-microscope-server/.venv/lib/python3.11/site-packages/PIL/ImageFile.py", line 312, in load
    raise _get_oserror(err_code, encoder=False)
OSError: broken data stream when reading image file

Configuration

  • Sever version: v3
  • Release/Branch: v3, commit estimated to be around (b90b02cf)
  • Hardware Configuration:
    • Raspberry Pi Camera v2
    • Sangaboard v0.5
Edited by Julian Stirling