Recentemente, comecei a dedicar tempo e esforço para entender o projeto do navegador cromo. Meu objetivo é, eventualmente, ser capaz de contribuir como desenvolvedor, então acabei procurando como obtê-lo e construí-lo localmente. Estou enfrentando alguns problemas ao executá-lo e não consigo encontrar nenhuma explicação ainda.
Espero que ajude outras pessoas que estão na mesma situação. Depois de olhar um pouco nos fóruns, não encontrei algo parecido e gostaria de saber se isso é algo que eu perdi.
Eu estou tentando executar o navegador cromo no Windows 10 Home Edition. Minha configuração atual é i5-2500k / 8GB DDR3 e meu espaço de trabalho está em um disco rígido até que eu obtenha um SSD maior (as especificações recomendadas estão sugerindo 16-32 GB de RAM e um SSD para permitir que ele seja construído e executado melhor. fazer parte do problema?).
Minha versão atual do cromo é: Versão 54.0.2808.0 (64 bits)
Para buscar e construir o projeto, segui as instruções sobre como obter o código.
O que eu fiz é:
- Extraiu a versão do Windows das ferramentas de depósito em meu espaço de trabalho
- Obteve os repositórios com
fetch chromium
egclient runhooks
- Construído com
cd src
,gn gen out/Default
eninja -C out/Debug
O processo de construção faz seu trabalho e nenhum erro é exibido no console. No entanto, quando eu inicio o navegador, recebo vários erros que parecem estar relacionados ao stacktrace. Esses erros não são modais e, desde que eu não feche nenhum deles, o chrome continua respondendo e as páginas são mostradas como esperado, então isso não é grande coisa por enquanto:
Mas, se eu fizer algum carregamento pesado (por exemplo: carregar o feed de notícias do Facebook), ele parece travar e não responde muito bem a partir desse ponto (por exemplo: carregamento sem fim, eventos de mouse não funcionando dentro da guia). Ele também pode ser reproduzido no meu final, indo para https://www.google.ca e clicando com o botão direito em qualquer lugar da página.
Para tentar acelerar um pouco as coisas, eu executei um script para renomear todos os arquivos pdb para que eles não sejam anexados ao processo. Isso melhora muito a velocidade, mas ainda há erros. Erros do StackTrace tornam-se assim:
Quanto ao problema pendente, ele agora mostrará uma caixa modal vazia sugerindo um erro (a descrição não é muito gentil com o que é). Este é modal e, uma vez fechado, o cromado para de funcionar como pretendido. O que acontece é que os eventos de mouse não aparecem, e a página nunca terminará de ser carregada ao recarregá-la.
Estou ciente de que a versão mais recente pode ser instável às vezes, mas estou trabalhando para torná-lo um projeto agradável para trabalhar. Há algo que eu fiz de errado aqui ou passos que eu possa ter perdido? Há pessoas aqui que descobriram problemas semelhantes?
Muito obrigado, qualquer ajuda é muito apreciada!
Frederik
Atualização - 28/07/2016:
Indo para o código em si, descobri que o primeiro erro é causado por ::FreeLibrary (in module_list.cc)
não sendo capaz de liberar corretamente o HMODULE. Desculpe por colocar o código aqui, se isso puder ajudar, prefiro deixar aqui.
Investigação atual: construir uma nova versão que recorra em ::UnMapViewOfFile
quando ::FreeLibrary
não consegue ver se passa pelos primeiros erros.
Para o segundo erro, ainda não faço ideia do que está acontecendo. Indo para continuar a investigação, na esperança de encontrar mais detalhes em potencial.
Por favor, sinta-se livre para pedir qualquer informação que possa ajudar a resolver os problemas.
Atualização 2 - 28/07/2016:
Eu fiz uma pergunta diferente, mais orientada a programação no StackOverflow, se puder ajudar: O navegador Chromium cria erros fatais em module_list.cc: falha na verificação
Atualização 3 - 2016/07/29
Eu finalmente consegui algo funcionando !! O que é que está a configurar a compilação com estas configurações em args.gn:
> gn args out/Default
is_debug = false
enable_nacl = false
symbol_level = 0
remove_webcore_debug_symbols = true
Esta configuração não é viável para depuração, mas ter uma configuração de trabalho é um grande passo à frente. Super feliz agora !! Minha hipótese atual seria que ele tem que fazer alguma coisa com o sinalizador de depuração. Pode ser que as chamadas de função interna tenham problemas para acessar os nomes de módulo corretos no modo de depuração?
Atualização 4 - 2016/08/13
Após uma nova compilação de depuração, notei que poucas DLLs de depurador do Windows Kit não foram copiadas no diretório de compilação. Desta vez, o processo de ligação falhou em api-ms-win-crt-math-l1-1-0.dll
. Eu então copiei todos eles na esperança de resolver todos os problemas. Na primeira execução, os erros não apareceram, mas o mesmo comportamento ocorreu quando eu cliquei com o botão direito do mouse na página inicial do Google (mecânica de navegação quebrada silenciosamente). Depois de fechar e reabri-lo, os mesmos erros estão de volta.
Alguém como uma ideia para resolver esses problemas ou quaisquer procedimentos diferentes dos que estão no projeto do cromo?