diff -up firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py.exceptionHandled-for-IO-error-processhandler firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py
--- firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py.exceptionHandled-for-IO-error-processhandler	2025-07-14 19:14:55.000000000 +0200
+++ firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py	2025-08-05 18:05:54.329479764 +0200
@@ -1098,11 +1098,22 @@ class ProcessReader:
 
     def _read_stream(self, stream, queue, callback):
         sentinel = "" if isinstance(stream, io.TextIOBase) else b""
-        for line in iter(stream.readline, sentinel):
-            queue.put((line, callback))
+        try:
+            for line in iter(stream.readline, sentinel):
+                queue.put((line, callback))
+        except ValueError as e:
+            if "I/O operation on closed file" in str(e):
+                # Stream was closed by the process, this is normal
+                pass
+            else:
+                raise
         # Give a chance to the reading loop to exit without a timeout.
         queue.put((b"", None))
-        stream.close()
+        try:
+            stream.close()
+        except ValueError:
+            # Stream might already be closed
+            pass
 
     def start(self, proc):
         queue = Queue()