DEV Community

Cover image for Cava com segfault no WezTerm (Flatpak)? Diagnóstico e solução em um comando
Igor Giamoniano
Igor Giamoniano

Posted on

Cava com segfault no WezTerm (Flatpak)? Diagnóstico e solução em um comando

O cava roda normalmente em qualquer terminal — mas dentro do WezTerm instalado via Flatpak ele morre com:

Segmentation fault (core dumped)
Enter fullscreen mode Exit fullscreen mode

Se você chegou aqui com esse problema, a solução rápida está logo abaixo. O diagnóstico detalhado vem depois, para quem quiser entender o porquê.


⚡ TL;DR — Solução em dois comandos

flatpak update org.wezfurlong.wezterm
flatpak override --user org.wezfurlong.wezterm --device=all
Enter fullscreen mode Exit fullscreen mode

🔍 O que está acontecendo por baixo dos panos

Por que o WezTerm Flatpak causa o crash?

O Flatpak roda o WezTerm dentro de um sandbox que isola o processo do sistema hospedeiro. O cava tenta enumerar os dispositivos de áudio disponíveis (ALSA/PipeWire) logo na inicialização — sem acesso a esses nós de dispositivo, recebe um ponteiro inválido e segfaulta.

É por isso que outros terminais (GNOME Terminal, Kitty, etc.) não têm o problema: eles têm acesso irrestrito ao sistema. O --device=all resolve exatamente isso: libera o acesso aos dispositivos de áudio que o cava precisa para inicializar.

Como hipótese secundária (não confirmada diretamente), o sandbox também pode modificar variáveis de ambiente que o cava usa para detectar o backend de áudio.

Confirmando com GDB

Quer ver o backtrace completo? Expanda aqui.

Dentro do WezTerm, execute:

gdb cava
Enter fullscreen mode Exit fullscreen mode

Quando aparecer a pergunta, aceite o debuginfod com y. Depois:

(gdb) run
Enter fullscreen mode Exit fullscreen mode

Ao ocorrer a falha:

(gdb) bt
Enter fullscreen mode Exit fullscreen mode

A saída deve ser parecida com esta:

Program received signal SIGSEGV, Segmentation fault.
__strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:283
283             VMOVU   (%rdi), %ymm0
(gdb) bt
#0  __strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:283
#1  0x0000555555559cfe in main (argc=, argv=)
    at /usr/src/debug/cava-0.10.2-7.fc44.x86_64/cava.c:297
Enter fullscreen mode Exit fullscreen mode

O crash ocorre em __strncmp_avx2 — uma função de comparação de strings da glibc — chamada pelo cava na linha 297. O ponteiro passado é nulo ou aponta para memória inválida, o que indica que cava não conseguiu obter informações válidas sobre os dispositivos de áudio e segfaultou ao tentar usá-las.


✅ Solução passo a passo

1. Atualize os pacotes

sudo dnf upgrade cava          # Fedora
flatpak update org.wezfurlong.wezterm
Enter fullscreen mode Exit fullscreen mode

2. Conceda acesso a dispositivos

flatpak override --user org.wezfurlong.wezterm --device=all
Enter fullscreen mode Exit fullscreen mode

3. Reinicie o WezTerm completamente

Feche todas as janelas e reabra. Ctrl+Shift+R não é suficiente — a permissão do Flatpak só entra em vigor com um reinício completo.

4. Teste

cava
Enter fullscreen mode Exit fullscreen mode

🎉 Funcionou? Pronto. Se não, veja as alternativas abaixo.


🖱️ Alternativa: Flatseal

Prefere uma interface gráfica para gerenciar permissões do Flatpak?

flatpak install flathub com.github.tchx84.Flatseal
Enter fullscreen mode Exit fullscreen mode

Abra o Flatseal → selecione WezTerm → seção Device → ative All devices → reinicie o WezTerm. O resultado é idêntico ao comando anterior.


⚠️ Se ainda não funcionar

Serviço de áudio inativo: verifique se o PipeWire está rodando:

systemctl --user status pipewire
# Se inativo:
systemctl --user start pipewire
Enter fullscreen mode Exit fullscreen mode

Problema de renderização: adicione ao ~/.wezterm.lua:

config.front_end = "Software"
Enter fullscreen mode Exit fullscreen mode

⚠️ Esta opção pode causar lentidão ou impedir o WezTerm de abrir em alguns sistemas. Use com cautela.


🔄 Último recurso: versão nativa do WezTerm

Se nada funcionar — ou se o tradeoff do --device=all não for aceitável — a versão nativa resolve definitivamente: sem sandbox, sem restrições de dispositivo.

A documentação oficial cobre todas as opções: AppImage, pacotes .deb/.rpm e compilação do fonte.


📌 Resumo

Solução Complexidade Mantém Flatpak?
flatpak override --device=all ⭐ Baixa
Flatseal (GUI) ⭐ Baixa
Verificar PipeWire ⭐⭐ Média
front_end = "Software" ⭐⭐ Média
Instalar versão nativa ⭐⭐ Média

A causa é o sandbox do Flatpak bloqueando o acesso do cava aos dispositivos de áudio na inicialização. Liberar esse acesso com --device=all resolve em quase todos os casos — e você mantém todas as vantagens do Flatpak.


📝 Tutorial baseado em experiência real no Fedora 44+ com WezTerm (Flatpak) e cava 0.10.2.

Top comments (0)