(Atualização: hoje, tar funciona sem segfault sem alterações conhecidas no sistema. O comando "rm" agora está com segfault. Argh! Talvez isso esteja sendo causado pelo ESXi? Ou talvez pelo hardware.)
Eu tenho um sistema Centos 5.3 rodando no VMWare ESXi. Está funcionando há um bom tempo sem muitos problemas. Recentemente, porém, notei que o comando tar e o comando rpm apresentam uma falha de segmentação quando os executo.
Então, tentei usar o strace (encontrei alguém que sugeriu isso online) e abaixo está o que recebo ao usar o strace. Gostaria de saber como reparar meu sistema e como posso evitar que isso aconteça no futuro.
Obrigado a todos antecipadamente!
A saída:
[root@wagon init.d]# strace -f rpm execve("/bin/rpm", ["rpm"], [/* 20 variáveis */]) = 0 brk(0) = 0x9e98000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Esse arquivo ou diretório não existe) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=51424, ...}) = 0 mmap2(NULO, 51424, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f79000 fechar(3) = 0 open("/usr/lib/librpm-4.4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\ 257\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=378528, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f78000 mmap2(NULO, 588416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xd43000 mmap2(0xd9d000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x59) = 0xd9d000 mmap2(0xda1000, 203392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xda1000 fechar(3) = 0 open("/usr/lib/librpmdb-4.4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\307\ 1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1134540, ...}) = 0 mmap2(NULO, 1139296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x627000 mmap2(0x739000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x111) = 0x739000 mmap2(0x73d000, 608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73d000 fechar(3) = 0 open("/lib/libselinux.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0005\ 0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=91892, ...}) = 0 mmap2(NULO, 97112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xc25000 mmap2(0xc3b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15) = 0xc3b000 fechar(3) = 0 open("/usr/lib/librpmio-4.4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\276 \0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=396276, ...}) = 0 mmap2(NULO, 540192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb64000 mmap2(0xbc3000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5e) = 0xbc3000 mmap2(0xbc6000, 138784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xbc6000 fechar(3) = 0 open("/usr/lib/libpopt.so.0", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\ 20\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=29008, ...}) = 0 mmap2(NULO, 31856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7c5000 mmap2(0x7cc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x7cc000 fechar(3) = 0 open("/usr/lib/libsqlite3.so.0", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340= \327\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=385180, ...}) = 0 mmap2(0xd6a000, 387072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x110000 mmap2(0x16d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5c) = 0x16d000 fechar(3) = 0 open("/usr/lib/libelf.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\35\ 0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=87508, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f77000 mmap2(NULO, 90296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x9cf000 mmap2(0x9e4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0x9e4000 fechar(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0204\ 0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=206380, ...}) = 0 mmap2(NULO, 155760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x16f000 mmap2(0x194000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24) = 0x194000 fechar(3) = 0 open("/usr/lib/libz.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\ 245\303\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=75028, ...}) = 0 mmap2(0xc39000, 76400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x196000 mmap2(0x1a8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11) = 0x1a8000 fechar(3) = 0 open("/usr/lib/libnss3.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0mr\ 0054\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1306252, ...}) = 0 mmap2(0x5714000, 1310584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x5714000 mmap2(0x584e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x139) = 0x584e000 fechar(3) = 0 open("/usr/lib/libplds4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\312\ 205\0054\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=11460, ...}) = 0 mmap2(0x585c000, 8672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x585c000 mmap2(0x585e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x585e000 fechar(3) = 0 open("/usr/lib/libplc4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360m\ 205\0054\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=15556, ...}) = 0 mmap2(0x5856000, 12744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x5856000 mmap2(0x5859000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0x5859000 fechar(3) = 0 open("/usr/lib/libnspr4.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\227\ 206\0054\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=228028, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f76000 mmap2(0x5861000, 232928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x5861000 mmap2(0x5897000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36) = 0x5897000 mmap2(0x5898000, 7648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x5898000 fechar(3) = 0 open("/lib/libdl.so.2", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\n\ 0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=14644, ...}) = 0 mmap2(NULO, 12408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2a7000 mmap2(0x2a9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0x2a9000 fechar(3) = 0 open("/lib/librt.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\ 30\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=42048, ...}) = 0 mmap2(NULO, 33324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7d0000 mmap2(0x7d7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x7d7000 fechar(3) = 0 open("/lib/libpthread.so.0", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000H\0\ 0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=123596, ...}) = 0 mmap2(NULO, 90592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x1a9000 mmap2(0x1bc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0x1bc000 mmap2(0x1be000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1be000 fechar(3) = 0 open("/usr/lib/libbz2.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\ 17\364\0034\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=71852, ...}) = 0 mmap2(0x3f40000, 69128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3f40000 mmap2(0x3f50000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10) = 0x3f50000 fechar(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320_\ 1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1603392, ...}) = 0 mmap2(NULO, 1324452, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ab000 mmap2(0x3e9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e) = 0x3e9000 mmap2(0x3ec000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ec000 fechar(3) = 0 open("/lib/libsepol.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\ 256\306\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=242880, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f75000 mmap2(0xc68000, 286624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xc68000 mmap2(0xca3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xca3000 mmap2(0xca4000, 40864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xca4000 fechar(3) = 0 open("/lib/libgcc_s.so.1", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\26 \0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=44992, ...}) = 0 mmap2(NULO, 48036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x435000 mmap2(0x440000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa) = 0x440000 fechar(3) = 0 open("/usr/lib/libnssutil3.so", O_RDONLY) = 3 leia(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\ 350o\0054\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=96764, ...}) = 0 mmap2(0x56fa000, 98028, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x56fa000 mmap2(0x570f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0x570f000 fechar(3) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f74000 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f73000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f736d0, limite:1048575, seg_32bit:1, conteúdo:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, utilizável:1}) = 0 mproteger(0x3e9000, 8192, PROT_READ) = 0 mproteger(0x1bc000, 4096, PROT_READ) = 0 mproteger(0x7d7000, 4096, PROT_READ) = 0 mproteger(0x2a9000, 4096, PROT_READ) = 0 mproteger(0x194000, 4096, PROT_READ) = 0 mproteger(0xff9000, 4096, PROT_READ) = 0 mapamun(0xb7f79000, 51424) = 0 set_tid_address(0xb7f73718) = 5604 set_robust_list(0xb7f73720, 0xc) = 0 futex(0xbf9763c4, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigaction(SIGRTMIN, {0x1ad3d0, [], SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x1ad2e0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULO, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 uname({sys="Linux", node="wagon.localdomain", ...}) = 0 access("/etc/selinux/", F_OK) = 0 brk(0) = 0x9e98000 brk(0x9eb9000) = 0x9eb9000 open("/etc/selinux/config", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=511, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f85000 read(3, "# Este arquivo controla o estado o"..., 4096) = 511 ler(3, "", 4096) = 0 fechar(3) = 0 mapamun(0xb7f85000, 4096) = 0 open("/proc/montagens", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap2(NULO, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f85000 leia(3, "rootfs / rootfs rw 0 0\n/dev/root"..., 4096) = 587 ler(3, "", 4096) = 0 fechar(3) = 0 mapamun(0xb7f85000, 4096) = 0 --- SIGSEGV (falha de segmentação) @ 0 (0) --- +++ morto por SIGSEGV +++ [root@wagon init.d]#
Responder1
Mesmo sem muita investigação, pela sua descrição de que alguns programas começaram a falhar, então eles começaram a funcionar corretamente enquanto outros começaram a falhar, você tem módulos de memória ruins ou um pré-link quebrado.
Primeiro, pare todas as suas máquinas virtuais, reinicie o host e execute um teste de memória. Você tem que fazer isso de fora do ESXi. Se você encontrar algum defeito de memória, o problema é seu. Substitua o hardware.
Se nenhum defeito de memória for encontrado, verifique se você está executando o kernel CentOS mais recente disponível para sua arquitetura.
Inicialize o host e o servidor novamente, o servidor no modo de usuário único (passe "single" para os parâmetros do kernel do grub) e execute:
prelink -avf
Quando o pré-link terminar, você deverá reinicializar o servidor. Você também pode fazer isso telinit u && init 3
para retomar a inicialização, mas é melhor reinicializar para garantir que todos os binários serão recarregados com seus novos mapeamentos de memória.
Responder2
Isso é um palpite, mas tente desligar o se-linix e veja se funciona.
Não deveria falhar, mas pode haver um arquivo que não pode ser aberto por causa do se-linux que o tar nunca pensou que aconteceria.
Caso contrário, você terá que instalar o rpm de origem para tar, compilá-lo com depuração e executá-lo no depurador para ver o porquê.
Responder3
Ok, então não é tão complexo quanto eu pensava. O servidor foi comprometido e o hacker genial estragou a instalação do root kit. Portanto, o efeito foi a falha de segmentação binária. Outro efeito foi o tráfego de rede inesperado do servidor. Obrigado a todos que responderam!
Responder4
Tudo bem, parece muito divertido.
Primeiro, você tem duas caixas identicamente atualizadas (uma das quais não está com falha de segurança)?
Nesse caso, verifique o md5sum nos binários que estão com falha de segmentação, certifique-se de que sejam iguais.
Em seguida, execute ldd nos binários que estão falhando e execute md5sum nas bibliotecas para ver se são diferentes.
Agora, assumindo que as bibliotecas são as mesmas, algo mais está errado, provavelmente o ambiente ou configuração da máquina, mas vamos ver se o strace lança alguma luz.
Para citar seu strace, perto do final, você tem:
open("/proc/mounts", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f85000
read(3, "rootfs / rootfs rw 0 0\n/dev/root"..., 4096) = 587
read(3, "", 4096) = 0
close(3) = 0
munmap(0xb7f85000, 4096) = 0
A próxima linha é a mensagem segfault.
Na minha máquina CentOS 5.3 (rpm versão 4.4.2.3), meu rpm faz isso imediatamente:
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=56458752, ...}) = 0
mmap(NULL, 56458752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b36f9d01000
close(3) = 0
Eu arriscaria, portanto, que o problema seja fechar a memória após ler/proc/mounts ou abrir/usr/lib/locale/locale-archive. Como munmap() retornou 0, eu latiria para a árvore de localidade.
Aliás, se a sua configuração exclui a localidade, o próximo bloco que o meu executa é:
open("/usr/lib/rpm/rpmpopt-4.4.2.3", O_RDONLY) = 3
lseek(3, 0, SEEK_END) = 23100
lseek(3, 0, SEEK_SET) = 0
read(3, "#/*! \\page config_rpmpopt Defaul"..., 23100) = 23100
close(3)
Boa sorte e conte-nos o que você encontrou.