Eu tenho um programa gráfico idoso (~ 1999) e infelizmente comercial que funciona perfeitamente bem em sistemas com gcc até 3.4.6 (CentOS 4.8). No entanto, em todas as distribuições baseadas no gcc 4. * que eu tentei, o programa falha com "falha de segmentação" (tentei diferentes versões do CenOS, Sebian e SUSE).
Existem versões mais recentes deste software (temos mesmo uma licença) com muitas novas opções, pelo que para o trabalho diário estamos bem servidos. No entanto, o antigo tem essa boa opção para exportar um gráfico como um x-gráfico, enquanto as versões mais recentes são apenas baseadas em PpenGL. Mesmo que o x-graphic seja feio (desculpe por este adjetivo) é muito mais rápido se você trabalhar em uma linha DSL.
As únicas bibliotecas que estavam faltando durante a instalação foram: libXp.so.6, libXmu.so.6 e mesa3. Eu os instalei sem problemas usando o repositório padrão.
Eu tentei strace
a falha, mas depois de carregar todas as bibliotecas necessárias, o programa simplesmente pára sem me dar muita informação:
open("/lib/libuuid.so.1", O_RDONLY) = 3
read(3, "7ELFopen("/lib/libuuid.so.1", O_RDONLY) = 3
read(3, "7ELF%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%0%pre%%pre%04%pre%%pre%%pre%"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=15200, ...}) = 0
mmap2(NULL, 17828, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7464000
mmap2(0xf7468000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xfffffffff7468000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7463000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7462000
set_thread_area(0xff8de9b4) = 0
mprotect(0xf746c000, 4096, PROT_READ) = 0
mprotect(0x439000, 8192, PROT_READ) = 0
mprotect(0xf74dc000, 4096, PROT_READ) = 0
mprotect(0xf763f000, 1032192, PROT_READ|PROT_WRITE) = 0
mprotect(0xf763f000, 1032192, PROT_READ|PROT_EXEC) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%0%pre%%pre%04%pre%%pre%%pre%"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=15200, ...}) = 0
mmap2(NULL, 17828, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7464000
mmap2(0xf7468000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xfffffffff7468000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7463000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7462000
set_thread_area(0xff8de9b4) = 0
mprotect(0xf746c000, 4096, PROT_READ) = 0
mprotect(0x439000, 8192, PROT_READ) = 0
mprotect(0xf74dc000, 4096, PROT_READ) = 0
mprotect(0xf763f000, 1032192, PROT_READ|PROT_WRITE) = 0
mprotect(0xf763f000, 1032192, PROT_READ|PROT_EXEC) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault
Alguém tem alguma idéia de como executar esse programa nas novas distribuições?
p.s. Eu não tenho fontes para isso. O conselho Use a fonte, Luke !! não funcionará para mim.
p.s.s. Para pessoas curiosas - o software é chamado gaussview v2