StackTrace de construção recente do Windows Chromium-browser e erros fatais anônimos em tempo de execução

1

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 e gclient runhooks
  • Construído com cd src, gn gen out/Default e ninja -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:

StackTrace errors

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: Errors when no PDB

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

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?

Frederik.L
fonte
Ter os rastreamentos de pilha apenas como imagens não é útil. Você pode colocar um no Pastebin pelo menos, se você não se sentir bem em incluí-lo na pergunta como texto?
tripleee
@tripleee Eu farei o meu melhor para recuperar ou canalizar os erros na próxima semana para poder copiar / colar eficientemente.
Frederik.L

Respostas:

3

Gostaria de pedir-lhe para definir o seu janelas , meio Ambiente para o Visual Studio e obtenha o compilador toolchain corretamente. Siga os passos no link abaixo e experimente tudo com a versão mais recente, incluindo atualizações. Por favor, encontre o link aqui: Instrução de Construção do Windows

Para sua referência, encontre os snapshots do build do Chromium aqui: Instantâneos do cromo

Deixe-me saber se isso ajuda você mesmo um pouco. Obrigado.

Animesh Patra
fonte
Eu verifiquei as configurações. A única coisa que tenho diferente é que eu realmente tenho o Visual Studio 2015 Atualização 3 em vez da Atualização 2. Pode ser tão ruim assim e vale a pena fazer o downgrade do VS e construir o cromo desde o começo? Demora um pouco de tempo para reconstruir tudo, então eu tento dar palpites espertos :) Quanto aos snapshots, obrigado, eu pude testar com o mais recente 408050 e pude executá-lo sem os erros que eu tenho com minha própria construção. Então provavelmente é minha culpa.
Frederik.L
Sim, eu posso entender a dor de começar de novo desde o começo. Mas você tem que entender que sua configuração atual também não está funcionando corretamente. Então, por que não tentar tudo enquanto pode? Quem sabe desta vez você poderia encontrar algo muito mais interessante que valha a pena começar?
Animesh Patra
Vou reverter para o VS 2015 Update 2 e executar uma compilação limpa durante a noite para ver se isso ajuda e dará algum feedback quando estiver pronto. Obrigado por seus conselhos, isso me ajuda muito! Eu realmente encontro novas configurações úteis cada vez que eu começo de novo. Espero que os passos estejam mais seguros agora desde que eu envolvi o projeto dentro de um esqueleto do Node.js.
Frederik.L
Obrigado pelas amáveis ​​palavras. Espero que desta vez você tenha sucesso. Boa sorte.
Animesh Patra
1
Ei, tenho algo funcionando! (veja minha última atualização). A única coisa que resta é descobrir por que isso funciona no modo de liberação, mas falha no modo de depuração. Estamos chegando muito perto! Eu poderei continuar testando na próxima segunda-feira (2016-07-30) porque eu tenho um exame amanhã e longe do computador até então. Ainda assim poderei responder a perguntas sobre o que é minha configuração de construção.
Frederik.L