O processo filho extra trava vários aplicativos

1

Ubuntu Studio 16.04, laptop Lenovo.

Por vezes quando inicio uma aplicação a partir de (1) o menu principal da aplicação ou (2) clico com o botão direito num ficheiro ("Abrir com ...") ou (3) linha de comandos , o aplicativo trava. (O aplicativo de suspensão foi: Firefox, Thunderbird, LibreOffice.)

Percorrendo a árvore de processos, descubro que, em todos os casos, o aplicativo solicitado gerou um processo filho. Exemplo:

~$ ps aux | grep thunderbird
jga       7420  2.2  2.5 618832 99864 ?        Sl   22:24   0:00 /usr/lib/thunderbird/thunderbird
jga       7424  0.1  0.7 378240 31344 ?        S    22:24   0:00 /usr/lib/thunderbird/thunderbird
jga       7452  0.0  0.0  14224   928 pts/1    S+   22:24   0:00 grep thunderbird

(E pstree confirma a relação pai-filho entre 7420 e 7424).

Se eu matar o processo filho, o pai será iniciado normalmente.

Aqui está o Libre Office fazendo a mesma coisa.

~$ libreoffice --calc &
[2] 7792
[1]   Done                    libreoffice --calc
~$ #hanging...
~$ ps aux | grep office
jga       7792  0.1  0.1 207860  5764 pts/1    Sl   22:52   0:00 /usr/lib/libreoffice/program/oosplash --calc
jga       7809  0.4  1.4 607036 58752 pts/1    Sl   22:52   0:00 /usr/lib/libreoffice/program/soffice.bin --calc --splash-pipe=5
jga       7810  0.0  0.6 406804 24200 pts/1    S    22:52   0:00 /usr/lib/libreoffice/program/soffice.bin --calc --splash-pipe=5
jga       7815  0.0  0.0  14224  1028 pts/1    S+   22:53   0:00 grep office
~$ kill -9 7810
~$ # Spreadsheet comes up.

No entanto, se eu iniciar o processo em primeiro plano - não travar.

Então, o que está acontecendo? A única modificação do sistema que fiz recentemente foi adicionar o Notes ao meu Painel, que depois removi novamente.

Rodando a caixa de ferramentas, eu corri strace tanto no firefox quanto no libreoffice. por exemplo. strace -ff -o /tmp/loffice libreoffice --calc

Em ambos os casos, os subprocessos pendentes tinham o seguinte recurso em comum:

  • abrindo o / etc / drirc para ler
  • verificando a existência de ~ / .drirc (não existe)
  • um syscall escrito em alguma alça que acaba sendo interrompida, por exemplo

    ioctl(5, DRM_IOCTL_I915_GEM_CREATE, 0x7ffd90290680) = 0
    ioctl(5, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x5e, 0x28), 0x7ffd90290630) = 0
    ioctl(5, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7ffd90290630) = 0
    ioctl(5, DRM_IOCTL_I915_GEM_SET_DOMAIN <unfinished ...>
    

Uma rápida visita ao Goog me diz que o drirc está relacionado à renderização, e eu sou lembrado que a minha breve instalação do aplicativo do Painel de Notas foi a primeira vez que vi janelas semitransparentes nesta instalação.

Então, relacionado? O que está acontecendo?

    
por John Aspinall 25.08.2016 / 05:08

0 respostas