Dziwne błędy przeglądarki Google Chrome w pliku system.log

10

Używam Mavericks i Google Chrome Wersja 34.0.1797.2 dev.

To jest błąd, który otrzymuję:

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)

Masz pojęcie, co może być tego przyczyną? Przeszukałem go i nie znalazłem pojęcia ...

Paweł Gościcki
źródło
1
Widzę ten komunikat w dzienniku przede wszystkim w związku z tym problemem: dyskusji.apple.com/message/23755770#23755770 (Mavericks „kończy się” z gniazd TCP).
Benjamin Riggs
1
Pierwsze dwa wyjaśnienia są trywialne - piaskownica rejestruje odmowy, więc programiści Google mogą naprawić ten kod, ponieważ system operacyjny odmawia dostępu, o który prosi kod. Ostatnia wiadomość może być potrzebna do sprawdzenia kodu źródłowego chrome. Jaki to powoduje problem? Czy możesz sprawić, by komunikaty pojawiały się na komendę?
bmike
Nie jestem pewien, czy mogę je uruchomić. Po prostu nie lubię zbyt wielu komunikatów o błędach / ostrzeżeniach w moich logach.
Paweł Gościcki
1
Jeśli nie lubisz komunikatów ostrzegawczych w swoich logach, po prostu nie powinieneś uruchamiać „programistycznych” wersji oprogramowania. W przypadku Chrome oznacza to, że oprogramowanie nie jest przeznaczone do ogólnej wersji i najprawdopodobniej zawiera błędy i być może komunikaty ostrzegawcze przeznaczone tylko dla programistów.
jksoegaard
Przepraszam, ale nie sądzę, żeby to było właściwie poprawne. Jestem pewien, że kilka miesięcy temu widziałem te same wiadomości w stabilnym kanale (oprócz znacznych problemów z wydajnością, które spowodowały zmianę przeglądarki). I jestem prawie pewien, że te konkretne komunikaty są generowane przez system operacyjny jako wskazówka dla programistów, aby naprawili swój kod, a nie generowane przez samą aplikację.
Alistair McMillan

Odpowiedzi:

3

Jak zapewne wiesz, Google Chrome działa jako aplikacja wieloprocesowa . Masz swój początkowy proces „Google Chrome”, który zarządza interfejsem użytkownika i odtwarza „host” dla szeregu innych procesów. Dla każdej zakładki otwieranej w Chrome tworzony jest nowy proces „renderer”, proces „wtyczki” dla każdego instalowanego rozszerzenia oraz osobny proces „GPU” dla kodu komunikującego się z GPU systemu. Każdy z tych procesów pojawia się w monitorze aktywności jako proces „Google Chrome Helper”.

Aby zwiększyć bezpieczeństwo Chrome, procesy renderujące działają w piaskownicy . Mogą rozmawiać z siecią tylko przez proces hosta i mogą rozmawiać tylko z określonymi plikami (na przykład czcionkami i profilami ColorSync). Nie mogą też rozmawiać z innymi procesami w systemie, co powoduje te komunikaty w dzienniku. Procesy renderera próbują rozmawiać z procesami uruchamiania i obsługi okien, ale nie można tego zrobić z powodu ich piaskownicy.

Ten błąd został rozwiązany przez inżyniera oprogramowania w zespole Google Chrome ds. Bezpieczeństwa przy zatwierdzeniu w lutym 2014 r. Usunięcie tego jednego wiersza kodu rozwiązało problem.

[NSApplication sharedApplication];

Wywołanie metody sharedApplication powoduje między innymi połączenie między aplikacją a WindowServer systemu OS X, co może oznaczać błąd w błędzie CGSLookupServerRootPort.

Zamiarem Chrome było wywołanie tej metody w celu „rozgrzania” niektórych zasobów przed włączeniem piaskownicy; uzyskiwanie dostępu do niektórych plików, procesów lub zasobów sieciowych przed wprowadzeniem ograniczeń piaskownicy. Wydaje się jednak, że w pewnym momencie ta próba zaczęła się nie powieść, co spowodowało błędy w dzienniku. Domyślam się, że Apple uznał tę „rozgrzewkę” za próbę oszukiwania piaskownicy i zaczął ją ograniczać.

Jeśli czytam poprawnie, ta zmiana dotarła do kanału stabilnego wydania wraz z aktualizacją Google Chrome do 34.0.1847.131 w kwietniu 2014.

Co ciekawe, zespół Chrome omawiał usuwanie tych wywołań metody sharedApplication w październiku 2013 r., A nawet dyskutował nad usunięciem kakao z procesów renderujących jako cel jeszcze w 2009 r.

W powiązanej notatce Apple opublikowało poprawkę bezpieczeństwa w kwietniu 2014 r., Aby rozwiązać błąd polegający na tym, że „sesje WindowServer mogą być tworzone przez aplikacje w piaskownicy”.

Alistair McMillan
źródło