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:
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?