Seltsame Google Chrome-Fehler in system.log

10

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 ...

Paweł Gościcki
quelle
1
Ich sehe diese Protokollnachricht hauptsächlich im Zusammenhang mit diesem Problem: diskussions.apple.com/message/23755770#23755770 (Mavericks gehen die TCP-Sockets aus.)
Benjamin Riggs
1
Die ersten beiden sind trivial zu erklären - die Sandbox protokolliert Ablehnungen, sodass Google-Entwickler diesen Code korrigieren können, da das Betriebssystem einen Zugriff verweigert, den der Code angefordert hat. Für die letzte Nachricht muss möglicherweise jemand den Chrome-Quellcode anzeigen. Welches Problem verursachen diese? Können Sie die Nachrichten auf Befehl anzeigen lassen?
bmike
Ich bin mir nicht sicher, ob ich sie auslösen kann. Ich mag einfach nicht zu viele Fehler- / Warnmeldungen in meinen Protokollen.
Paweł Gościcki
1
Wenn Sie keine Warnmeldungen in Ihren Protokollen mögen, sollten Sie einfach keine "dev" -Versionen der Software ausführen. Im Fall von Chrome bedeutet dies, dass die Software nicht für die allgemeine Veröffentlichung vorgesehen ist und höchstwahrscheinlich Fehler und möglicherweise Warnmeldungen enthält, die nur für Entwickler bestimmt sind.
Jksoegaard
Entschuldigung, aber ich denke nicht, dass dies tatsächlich richtig ist. Ich bin mir ziemlich sicher, dass ich vor einigen Monaten dieselben Nachrichten im stabilen Kanal gesehen habe (neben erheblichen Leistungsproblemen, die dazu geführt haben, dass ich den Browser gewechselt habe). Und ich bin mir ziemlich sicher, dass diese speziellen Nachrichten vom Betriebssystem als Hinweis für Entwickler generiert werden, um ihren Code zu korrigieren, anstatt von der Anwendung selbst generiert zu werden.
Alistair McMillan

Antworten:

3

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".

Alistair McMillan
quelle