Recuperação do vim em execução na sessão de tela após falha do Xorg

0

Recentemente, meu sistema ficou instável por causa de um misterioso vazamento de memória. Como resultado, tenho o processo Xorg frequentemente morto com Out of memory entry no /var/log/syslog .

Para salvar minha sessão vim em caso de falhas, eu a executo em screen .

Infelizmente, depois da morte do Xorg, não consigo recuperar a sessão vim . A concha recolocada está totalmente desarrumada. Até agora toda vez que eu estava tentando sair do vim emitindo o comando :qa no blind. Então, a cada pressão de Enter , recebo um prompt na mesma linha .

Eu suspeito que o vim não esteja em execução (tenha que validá-lo após a próxima falha) desde:

  1. apesar de ter emitido o comando :qa , a nova sessão vim me avisa sobre a presença do arquivo de troca,
  2. Eu posso ver o comando :qa no meu arquivo .bash_history .

A recuperação após o fechamento da janela do emulador de terminal funciona bem.

O que (mas consertando o vazamento de memória) devo fazer para preservar minha vim sessão?

Versões: vim - 7.4.52, screen - 4.01.00devel, Ubuntu - 14.04.5

[EDITAR] vim definitivamente não está em execução após falha - hoje encontrei a mensagem ICE default IO error handler doing an exit(), pid = 12810, errno = 11 na janela da tela reiniciada.

    
por abukaj 14.02.2017 / 11:40

1 resposta

1

Se o Vim reclamar de um arquivo de troca ao abrir um arquivo, existem dois casos: ele é de outro processo do Vim atualmente em execução, ou de um processo Vim com falha.

Se for de um processo em execução, a mensagem será assim:

E325: ATTENTION
Found a swap file by the name ".foo.swp"
          owned by: muru   dated: Thu Feb 16 15:59:59 2017
         file name: ~muru/foo
          modified: no
         user name: muru   host name: localhost
        process ID: 870 (still running)
While opening file "foo"

Observe como ele diz (still running) ao lado do ID do processo. Um erro devido a um arquivo de swap do Vim com falha não terá isso (exceto, se por coincidência, outro processo atualmente em execução tiver o mesmo PID). Se for de um Vim com falha, você pode escolher recuperar do arquivo de troca e depois excluí-lo.

Se for de um processo do Vim em execução no momento, você poderá eliminá-lo (o arquivo de permuta permitirá a recuperação) ou optar por sair normalmente se não quiser que um arquivo de troca ocorra. Para a última opção, se você não tiver screen ou alguma forma de interagir com o processo do Vim, você pode usar o Python para enviar códigos de chave para ele, conforme descrito em outro post de mim.

    
por muru 16.02.2017 / 11:38