Ich verwende Mavericks und Google Chrome Version 34.0.1797.2 dev.
Dies ist der Fehler, den ich erhalte:
Jan 25 17:09:12 genesis Google Chrome Helper[46267]: Process unable to create connection because the sandbox denied the right to lookup com.apple.coreservices.launchservicesd and so this process cannot talk to launchservicesd. : LSXPCClient.cp #426 `___ZN26LSClientToServerConnection21setupServerConnectionEiPK14__CFDictionary_block_invoke()` q=com.apple.main-thread
Jan 25 17:09:12 genesis Google Chrome Helper[46267]: Process unable to create connection because the sandbox denied the right to lookup com.apple.coreservices.launchservicesd and so this process cannot talk to launchservicesd.
Jan 25 17:09:12 genesis Google Chrome Helper[46267]: CGSLookupServerRootPort: Failed to look up the port for "com.apple.windowserver.active" (1100)
Irgendeine Idee, was dies verursachen könnte? Ich habe gegoogelt und keine Ahnung gefunden ...
google-chrome
Paweł Gościcki
quelle
quelle
Antworten:
Wie Sie vielleicht wissen, wird Google Chrome als Multiprozessanwendung ausgeführt . Sie haben Ihren anfänglichen "Google Chrome" -Prozess, der die Benutzeroberfläche verwaltet und "Host" für eine Reihe anderer Prozesse spielt. Für jede in Chrome geöffnete Registerkarte wird ein neuer "Renderer" -Prozess erstellt, für jede installierte Erweiterung ein "Plugin" -Prozess und für den Code, der mit der GPU des Systems kommuniziert, ein separater "GPU" -Prozess. Jeder dieser anderen Prozesse wird im Aktivitätsmonitor als "Google Chrome Helper" -Prozess angezeigt.
Um Chrome sicherer zu machen, werden die Rendererprozesse in einer Sandbox ausgeführt . Sie können nur über den Host-Prozess mit dem Netzwerk kommunizieren und nur mit bestimmten Dateien (z. B. Schriftarten und ColorSync-Profilen). Sie werden auch daran gehindert, mit anderen Prozessen im System zu kommunizieren, was diese Protokollmeldungen verursacht. Die Renderer-Prozesse versuchen, mit den Launchserviced- und Windows Service-Prozessen zu kommunizieren, werden jedoch aufgrund ihrer Sandbox daran gehindert.
Dieser Fehler wurde von einem Softwareentwickler im Chrome Security-Team von Google mit einem Commit im Februar 2014 behoben. Durch Entfernen dieser einen Codezeile wurde das Problem behoben.
[NSApplication sharedApplication];
Unter anderem wird durch das Aufrufen der sharedApplication-Methode eine Verbindung zwischen einer Anwendung und dem WindowServer von OS X hergestellt, was im CGSLookupServerRootPort-Fehler fehlschlägt.
Chrome sollte diese Methode aufrufen, um bestimmte Ressourcen "aufzuwärmen" , bevor die Sandbox aktiviert wird. Zugriff auf bestimmte Dateien, Prozesse oder Netzwerkressourcen erhalten, bevor die Sandbox-Einschränkungen eingeführt wurden. Es scheint jedoch, dass dieser Versuch irgendwann fehlschlug und zu diesen Fehlern im Protokoll führte. Ich vermute, Apple betrachtete dieses "Aufwärmen" als einen Versuch, den Sandkasten zu betrügen, und fing an, ihn festzuklemmen.
Wenn ich richtig lese, hat diese Änderung mit einem Update von Google Chrome auf 34.0.1847.131 im April 2014 den stabilen Release-Kanal erreicht .
Interessanterweise hatte das Chrome-Team bereits im Oktober 2013 über das Entfernen dieser Aufrufe an die sharedApplication-Methode gesprochen und bereits 2009 über das vollständige Entfernen von Cocoa aus den Renderer-Prozessen .
In einem ähnlichen Zusammenhang veröffentlichte Apple im April 2014 eine Sicherheitsupdates , um einen Fehler zu beheben, bei dem "WindowServer-Sitzungen von Sandbox-Anwendungen erstellt werden konnten".
quelle