iff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1066,17 +1066,17 @@ class SourceFileLoader(FileLoader, Sourc
             except FileExistsError:
                 # Probably another Python process already created the dir.
                 continue
-            except PermissionError:
-                # If can't get proper access, then just forget about writing
-                # the data.
+            except OSError as exc:
+                # Could be a permission error, read-only filesystem: just forget
+                # about writing the data.
+                _verbose_message('could not create {!r}: {!r}', parent, exc)
                 return
         try:
             _write_atomic(path, data, _mode)
             _verbose_message('created {!r}', path)
-        except (PermissionError, FileExistsError):
-            # Don't worry if you can't write bytecode or someone is writing
-            # it at the same time.
-            pass
+        except OSError as exc:
+            # Same as above: just don't write the bytecode.
+            _verbose_message('could not create {!r}: {!r}', path, exc)
