Yep, looks like a bug in the bootstrapping, failing to set __loader__ properly.

However, I also think the current handling of the "no __loader__ attribute" case is a separate bug - since we generally aim to tolerate non-modules in sys.modules (albeit somewhat grudgingly), importlib should probably be using "getattr(mod, '__loader__', None)" rather than assuming the attribute will always be present.

Cheers,
Nick.