Evitando reinicializações rígidas
As reinicializações difíceis quase nunca são necessárias. Se você está sempre em uma situação em que acha que pode precisar fazer uma reinicialização difícil, tente primeiro estas alternativas, nesta ordem:
-
Pressione Ctrl + Alt + F1 . Em seguida, pressione Ctrl + Alt + Apagar . Isso normalmente será encerrado e reinicializado de maneira limpa.
-
Se isso falhar, você pode fazer algo que é quase tão poderoso quanto uma reinicialização difícil, mas que diminui o risco de perda de dados e outros possíveis resultados negativos da reinicialização rígida. Mantenha pressionados Alt e SysRq e, em ordem, pressione R E I < kbd> S U B . (Mantenha pressionado Alt e SysRq o tempo todo, mas libere cada tecla da letra antes de pressionar a próxima.) esta página para uma explicação simples do que isso faz, e este artigo da Wikipedia para obter informações mais detalhadas.
No entanto, na situação que você encontrou e descreveu em sua pergunta, provavelmente não é necessário reinicializar . Existe uma técnica que provavelmente funcionará para finalizar gedit
, mas deixará todo o resto intacto e funcionando plenamente. Você pode até mesmo relatar o bug, mas como não é realmente uma falha, ele não estará com um arquivo .crash.
Recuperando sem reinicializar
Como a mudança de espaços de trabalho é possível, o sistema não está totalmente bloqueado. Quando isso acontece, você deve recuperar o controle completo do sistema fazendo o seguinte:
-
Pressione Ctrl + Alt + F1 para alternar da GUI para um console virtual.
-
Faça login com seu nome de usuário e senha. Você não verá nada na tela quando digitar sua senha. Tudo bem.
-
Agora que você tem um prompt de shell (como no aplicativo GUI do Terminal), finalize todos os
gedit
processos comkillall gedit
. Observe que você perderá qualquer trabalho não salvo em qualquergedit
janelas / guias. -
Execute
killall gedit
novamente para ver se funcionou na primeira vez. Se ele dizgedit: no process found
, isso significa que você encerrou com sucessogedit
. Se isso não for dito, entãogedit
não responderá ao SIGTERM (a maneira "legal" de solicitar que um processo termine). Neste caso, termine com SIGKILL executandokillall -KILL gedit
. Ocasionalmente, um processo está em suspensão ininterrupta, o que significa que ele está aguardando uma operação de E / S do kernel e não pode ser terminado dessa maneira. Para verificar isso, executekillall -KILL gedit
novamente. -
Pressione Ctrl + Alt + F7 para voltar para a GUI, que agora deve estar totalmente funcional.
Supondo que a GUI é totalmente funcional, o problema está na interação entre gedit
e algum componente da GUI - pode ser o próprio X11, ou pode ser o seu gerenciador de janelas (que pode ser compiz
, metacity
, openbox
ou outra coisa, dependendo de qual interface gráfica você usa). Isso pode ser devido a um bug no gedit ou no gerenciador de janelas (ou X11). Antes de relatar o bug, seria melhor investigar isso. Sean Davis 's conselho é bom. Você deve descobrir qual gerenciador de janelas você usa. Esta questão pode ajudá-lo com isso. Em versões recentes do Ubuntu, o 3D Unity usa compiz
e o Unity 2D usa metacity
. Você pode usar o comando ps
e grep
para ver se um processo está em execução, se souber seu nome. Por exemplo, você pode usar ps x | grep compiz
para ver se está executando compiz
ou ps x | grep metacity
para ver se está executando a meta. Como diz Sean Davis, se você estiver executando o Unity, experimente o Unity 2D (ou seja, clique no ícone de roda dentada na tela de login e selecione Ubuntu 2D ) e veja se o problema ainda ocorre.
Iniciando o processo de geração de relatórios de erros
Depois de coletar essas informações, vá em frente e informe o bug. Uma falha é quando um programa termina de forma anormal. Esse bug não é um travamento, portanto não haverá arquivo .crash e o Apport não poderá ser executado automaticamente para coletar dados. Mas você ainda pode usar o Apport para coletar alguns dados relevantes para relatar o bug. Existem duas maneiras razoáveis de fazer isso.
Uma opção é executar ubuntu-bug
, passando um nome de pacote como argumento. Isso reunirá dados sobre a maneira como o pacote é instalado e configurado em seu sistema e o anexará ao seu relatório de erros. Você deve especificar o pacote que provavelmente está causando o problema.Se o problema ocorrer no 3D Unity (tipo de sessão "Ubuntu"), mas não no Unity 2D (tipo de sessão "Ubuntu 2D"), então provavelmente é em compiz
, então execute ubuntu-bug compiz
. (Da mesma forma, se o problema ocorrer apenas com o Unity 2D, você poderá executar ubuntu-bug metacity
.) Caso contrário, vá em frente e relate-o contra gedit
com ubuntu-bug gedit
.
A execução de ubuntu-bug compiz
inclui muitas informações sobre compiz
, mas ubuntu-bug gedit
inclui menos informações sobre gedit
. Portanto, se você acha que o bug está em gedit
e está disposto a ir além, convém chamar o Apport enquanto gedit
estiver realmente em execução, para incluir informações sobre o processo gedit
em execução. Como sua GUI não funciona quando o bug está acontecendo, você teria que fazer isso no console virtual, entre as etapas 2 e 3 acima. Veja como:
-
Reproduza o bug arrastando uma guia de uma janela
gedit
para outra. -
Execute as etapas 1 e 2 nas instruções acima.
-
Determine o ID do processo de execução do processo
gedit
executando o comandopidof gedit
. Isso fornecerá um número, o PID do processogedit
em execução. -
Digite
script
e pressione Enter. Isso registra todo o texto no console. -
Execute
apport-cli $PID
, mas substitua$PID
pelo ID do processo de edição em execução, conforme determinado na etapa 3. -
Forneça qualquer informação que o Apport solicite na linha de comando. Você deve obter um URL. Será longo e de aparência aleatória e, portanto, muito difícil de lembrar. É por isso que você executou
script
para gravar tudo. -
Execute
exit
(para sair descript
). -
Mate
gedit
e volte para a GUI executando as etapas 3, 4 e 5 nas instruções acima. -
script
criou um arquivo chamadotypescript
, localizado em seu diretório pessoal. Encontre este arquivo e abra-o comgedit
ou outro editor de texto. Copie o URL dele e abra-o no seu navegador da Web. -
Você terá a oportunidade de escrever um relatório de erros no seu navegador da Web.
Escrevendo e enviando seu relatório de erros
No entanto, ao reportar o bug, você estará escrevendo um relatório no seu navegador da web e enviando-o. O relatório deve ser o mais detalhado possível. Ele deve descrever como produzir o bug, a versão do pacote para gedit
e qualquer pacote que forneça seu gerenciador de janelas (por exemplo, compiz
ou metacity
) e uma explicação de quais condições são necessárias para o erro ocorrer exemplo, ocorre em todas as interfaces, ou apenas Unity 3D, ou qualquer outra coisa).
Antes de enviar seu relatório de bug, você deve ler com atenção esta página se ainda não o fez.
Depois de enviar o seu relatório de erros, é aconselhável adicionar quaisquer pacotes adicionais que você acha que possam ser afetados. Normalmente, fica claro qual pacote é afetado por um bug, mas, neste caso, não está completamente claro. Mesmo que o problema ocorra com compiz
e não metacity
, ainda pode haver um problema em gedit
contribuindo para o bug.
Se você reportou o bug contra compiz
(ou metacity
ou algum outro gerenciador de janelas), você pode adicionar o pacote gedit
como afetado. Se você reportou isto contra o pacote gedit
porque você foi capaz de produzir o bug com pelo menos dois gerenciadores de janela diferentes, então você não deve adicionar nenhum gerenciador de janelas como afetado (a menos que haja algum gerenciador de janelas com o qual você tenha encontrado o bug não ocorre). Em vez disso, você pode adicionar o pacote xorg
.
Para adicionar outro pacote além daquele contra o qual você reportou inicialmente o bug, vá para a página de bug no Launchpad (se você ainda não estiver lá) e clique em Also affects distribution
. Especifique Ubuntu
como a distribuição (já que você está dizendo que afeta outro pacote no Ubuntu ). Em seguida, especifique o nome do pacote adicional que você acha que pode ser afetado, como o nome do pacote.
Com mais de um pacote listado para o bug, é provável (embora não certo) que todos, exceto um, sejam considerados incorretos e marcados como Invalid. Isso está ok. Mas reportando o bug contra todos os pacotes que parecem ser afetados, você está dando aos triadores de bugs e desenvolvedores para aqueles pacotes a oportunidade de rever seu bug e determinar se eles acham que está afetando o pacote deles. (Mas eu enfatizo que geralmente você não deve fazer isso, porque geralmente é possível descobrir, talvez com ajuda da comunidade, em qual pacote está um bug antes de reportá-lo.)