Excelente pergunta.
Cargas de trabalho
O diretório / usr / share / xdiagnose / workloads possui um conjunto de cargas de trabalho projetadas para exercitar seu sistema gráfico para acionar travamentos.
$ ls /usr/share/xdiagnose/workloads/
README do_monitor_rotation_loop
do_chws_loop* do_screensaver_loop*
do_cpu_spin_loop do_video_loop*
do_disk_write_loop do_vtswitch_loop*
do_glx_loop* repro.sh
do_kernel_compile_loop run_workloads
do_monitor_disable_loop* youtube-loop.html
do_monitor_resolution_loop* youtube-reload.html
Note que para executá-los você precisa passar 'run'. Por exemplo:
Execução de $ do_glx_loop
Sem argumentos, os scripts exibirão o uso. Em parte, isso é por segurança (caso as pessoas executem cegamente os scripts), mas principalmente é para manter a API dos scripts organizada.
Os que eu estrelou são provavelmente os melhores para começar. Eu começaria executando apenas um script de cada vez e o deixava passar algumas horas. Se o seu sistema sobreviver bem o suficiente, tente executar dois ou mais simultaneamente.
Note que eu não os testei super pesadamente, então não posso prometer que eles estão livres de erros. Mas são scripts muito curtos e simples, espero que sejam fáceis de consertar, e os patches são muito bem-vindos.
Observe também que eles provavelmente podem desencadear bloqueios não relacionados ao que você está tentando resolver. Os bloqueios de GPU geralmente parecem idênticos aos olhos não treinados, pois apresentam os mesmos sintomas, mais ou menos.
Histórico
Se você usa gráficos Intel, existe um / sys / kernel / debug / dri / 0 / i915_error_state que você deseja. Este é um instantâneo do estado do registro no momento da parada e a parte superior contém alguns códigos de erro. IPEHR, PGTBL_ER, ESR, EIR. Faça a correspondência desses códigos para verificar se você tem o mesmo erro ou erro semelhante.
Se você não está na Intel Graphics (como neste caso, não), ou se não vê os arquivos i915_error_state gerados, então é só olhar no dmesg e /var/log/kern.log. Às vezes, com bloqueios de gpu, eles indicam o que o bloqueio de GPU foi causado por ou dentro.
O driver -ati de código aberto possui o radeontool e o avivotool, que capturam os estados do registro. Estes são principalmente para o opensource -ati, mas as ferramentas também devem funcionar com -fglrx. Eu nunca vi o pedido de um bug -fglrx, mas certamente não pode doer.
Teste
Para todos os drivers, o próximo passo é geralmente começar a testar as versões mais recentes ou mais antigas do driver. Para drivers proprietários, você pode verificar o x-updates ppa, mas provavelmente precisará baixar e instalar manualmente o driver no site do fornecedor (e danificar a embalagem do sistema ao fazê-lo). Para drivers de software livre, como -intel, -nouveau, -ati, isso significa testar os kernels mais recentes ou o mesa mais recente. Nós fornecemos compilações de kernels mais recentes em http://kernel.ubuntu.com/~kernel-ppa/mainline/ . Para o mesa, existem vários PPAs, como o xorg-edgers. Também estou preparando uma atualização 8.0.3 para uma precisão, que acreditamos consertar vários bloqueios para os gráficos da Intel.
De qualquer forma, não pare quando encontrar uma versão que funcione. Experimente outras versões entre sua versão de trabalho e a versão quebrada. Se você pode restringir o suporte a duas versões adjacentes, isso pode ser extremamente útil para os desenvolvedores no isolamento de qual patch causou a regressão.
Contribuindo
À medida que você avança na solução de problemas, pode detectar erros ou apresentar melhorias para os scripts ou documentos. Contribuições para qualquer uma delas são muito bem-vindas. Com os documentos da wiki, vá em frente e edite! Eu tento atualizá-los pelo menos uma vez por ano, mas nem sempre entendo isso, e o próximo cara a visitar a página certamente apreciará seu esforço para melhorá-los.
Para alterações nos próprios scripts, também é muito bem-vindo. Envie-me as alterações da maneira que você se sentir confortável - como patches, um ramo bzr ou git, ou mesmo apenas cópias do script. Se você planeja fazer muitas alterações, uma ramificação bzr com uma proposta de mesclagem é a maneira preferida; tutoriais sobre como fazer isso estão disponíveis no code.launchpad.net ou fique à vontade para me encontrar no IRC, se você tiver alguma dúvida.
Ou, se você não estiver pronto para se aprofundar na codificação, mas desejar sinalizar erros ou áreas em que é necessária mais funcionalidade, é possível arquivar relatórios de erros da maneira usual ( ubuntu-bug xdiagnose
).
Correções rápidas
Se você não estiver interessado em fazer nenhuma das depurações acima, veja algumas dicas aleatórias:
Para drivers proprietários, tente desinstalar e removê-los completamente do seu sistema e depois reinstalar do zero. Infelizmente, isso "resolve" muitos bugs ...
Para os drivers FOSS, existem várias opções de kernel com as quais você pode brincar. Para bugs em 3D / mesa, também existe o driconf para ajustar várias configurações.
Finalmente
Finalmente, uma solicitação ... por favor, não apresente relatórios de erros ao Launchpad sobre "congelamentos aleatórios" até que você tenha feito pelo menos um pouco de investigação, como descrito acima. Caso contrário, você apenas aumentaria o ruído.
Tentamos pescar relatórios de bugs bem pesquisados; nós achamos que eles dão mais valor ao dinheiro e são muito mais propensos a acabar com uma correção real para a distribuição.