Vielleicht hilft das Log weiter?
Jein. Das Log bestätigt eigentlich nur, was ich beschrieben hatte. Die entscheidenden Zeilen sind diese hier:
Jun 21 23:43:14 MacBookPro loginwindow[35]: ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1804477595
Jun 21 23:43:16 MacBookPro loginwindow[35]: ERROR | WSActivateApp | SetFrontProcess({0, 700587}) returned error -600. Unable to activate process.
Man sieht hier, dass das Programm "loginwindow" - das ist das Anmeldefenster, das auch die grafische Benutzeroberfläche für das Herunterfahren übernimmt - versucht, allen gerade laufenden Programmen den AppleEvent "Quit" zuzusenden. Mit anderen Worten, alle Programme werden gebeten, sich kontrolliert zu beenden.
Das schlägt fehl, da es offenbar ein Programm gibt, das sich weder in den Vordergrund der grafischen Oberfläche bringen lässt, noch auf die "Quit"-Anforderung reagiert. Interessanterweise bedeutet Fehler -600 "Prozess nicht gefunden", d.h. es muss einen Widerspruch zwischen den Prozessnummern geben, die das loginwindow-Programm bei der Anfrage nach allen laufenden Programmen aus dem System erhält und der Sicht auf die Prozesse, die das AppleEvent-Subsystem hat. Sehr merkwürdig, sowas kann eigentlich gar nicht passieren.
Ist oder war irgendein Programm auf dem Rechner installiert, das auf irgendeine Weise andere Programme in ihrem Verhalten manipulieren soll?
Ich würde jetzt über ein Kommandozeilen-Remote-Login prüfen, ob es zur fehlenden Prozessnummer (im obigen Beispiel war das 700587) tatsächlich einen laufenden Prozess gibt und wenn ja, welchen. Das erfordert allerdings einige Kommandozeilenkenntnisse und einen zweiten Rechner.