Olá para todos,

como costumo fazer muitas vezes, acessei uma página na Wikipédia, na ocasião, na de língua portuguesa mesmo, para aprender um pouco mais sobre algo que passou por mim numa conversa qualquer. Isto faz uns 2 ou 3 dias.


O que aconteceu foi completamente incomum, inesperado e praticamente inexplicável. Quando eu acessei a página do "artigo X", meu computador começou, poucos instantes depois, a aumentar seu uso de memória, bem rapidamente. Em poucos segundos a memória RAM se esgotou (eu mantenho um monitor do sistema na minha barra de tarefas mostrando o uso de memória). Após a RAM se esgotar, claro, começou a aumentar o uso da memória virtual, que é em disco. Fiquei olhando aquilo, esperando algo acontecer pra talvez explicar o negócio. Seria a página da Wikipédia que causou o uso gigantesco de memória? Eu costumo ter muitos programas abertos simultaneamente, e vários deles ficam fazendo coisas diversas o tempo todo, embora não continuamente. Com quase tudo do sistema sendo transferido pra memória virtual, decidi fechar o navegador, que foi o último passo que fiz, provável culpado. Demorei vários minutos pra conseguir matar ele pelo sistema. Tudo estava muito lento, respondendo vários segundos depois da sua ação causal. Quando o navegador foi obrigado a parar de rodar, sem escolha, houve um aumento instantâneo da memória disponível, tanto na RAM quando na memória virtual que também foi gasta (e também é mostrada no meu monitor de sistema). Conclusão: o navegador foi quem gastou toda esta quantidade de memória. "Será por que?", eu me perguntei. A Wikipédia é uma página tão leve, e funciona até sem o javascript habilidado! (coisa que costumo usar desligado também porque ela fica mais lenta com as bobagens dinâmicas que vieram sendo acrescentadas nos últimos anos, e eu não gosto de nenhuma; prefiro as páginas leves, rápido carregamento, leitura, tudo rápido, sempre!)

Enfim. Tentei abrir o mesmo artigo de novo, com o javascript desabilitado. Mesmo resultado... e mais tempo perdido pela "bagunça memorial" feita no sistema.

Deixei pra lá um tempo. Talvez fosse alguma mudança na Wikipédia que deveria ser consertada rapidamente. Mas passando 1 dia, tentei de novo, não mudou nada.

Passado mais um dia, tentei outros artigos na Wikipédia, desta vez. Todos normais, abriram super rápido, como costuma acontecer. "E aí? Vamos tentar o artigo X de novo?" - pensei. E, como podem imaginar pelo assunto desta mensagem, o problema se repetiu. O problema pareceu ser, neste momento, algo que só tem neste artigo ou algo que pode ter em outros também, e que por "sorte" não tinha nos artigos que testei, eles estavam normais.

Mais tempo perdido recuperando o sistema que ficou bem lento... chato pra caramba!

Hoje, no final da tarde, me sentindo meio inspirado (ou à toa), quis achar o ponto exato da causa do problema. Porém, tinha várias limitações para eu contornar. Por exemplo, eu não consigo abrir o código fonte (wikipediano) da página em questão, pra ver se tem algum vandalismo nele. Isto vocês poderão fazer por mim - espero! - depois que eu terminar de cronicar isto tudo.

Salvei a página pela linha de comando. Eliminei no código fonte dela toda ocorrência de scripts. Abri a página no navegador, ansioso... PEEEEEEEEEEM! Mesmo problema, mais perda de tempo. Já me sentindo meio bobo por perder tanto tempo sem necessidade, eu consigo fazer melhor, já fui pensando em como evitar as lentidões na próxima tentativa. Fiz isto enquanto consertava a atual.

Ideia: buscar no código fonte da página, que já confirmei ter o problema. E o problema não é dos scripts, direta ou indiretamente - importante separação! Agora eu tenho "apenas" que achar qual linha ou característica da página (já salva no meu disco) faz a memória do navegador estourar. Acho que tem um máximo pro efeito, mas não tenho certeza... eu sempre consegui parar o navegador antes da memória total do sistema, que é muito grande, chegar ao fim.

"Como fazer a busca?" - pensei. Fácil! Quantas linhas tem o código? Divido ao meio, apago a primeira ou a segunda metade, abro a página resultante com algo perto de metade do tamanho original. Isto dará um código HTML ruim, claro. E eu não quis consertar ele pra ficar "menos errado", cheio de coisas não terminadas, etiquetas não fechadas, etc. Mas eu consigo arrumar o básico mais visível e os navegadores são projetados para lidar com vários tipos de erros nas páginas que abrem. E contando com isto, e fazendo esta busca binária, eu poderia, possivelmente, chegar a uma única linha culpada em poucas tentativas! Certo?? Meio idealista, mas é uma possibilidade a se tentar, já que estava bem no escuro com a causa do negócio.

A minha sorte está boa, consegui chegar rapidamente a uma única linha culpada! Nela tinha algo absurdo pra existir num artigo qualquer da Wikipédia. E pra confirmar que a culpa era do trem que eu achei, apaguei TUDO da página, exceto os cabeçalhos; tirei da etiqueta "<body" todos os elementos, exceto aqueles mais profundos que continham a tal linha - neste momento - suspeita. Abri a página só com esta linha, num código mínimo, de poucas linhas, e... O problema existiu! Exatamente igual!! Detalhe exótico mudado pra algo razoável, abri a página sem efeito algum (e quase sem conteúdo também). Pra terminar, baixei de novo, pela linha de comando, toda a página do artigo X. Fazendo uma busca simples, descobri que existiam duas ocorrências do possível erro. "Que tal testar??" - pensei. Fiz apenas duas mudanças no código baixado, alterando o exótico pra algo razoável. Abri o arquivo no navegador... ótimo! Não ocorreu problema algum! Problema confirmado, solução encontrada... e agora??

O artigo desta história está no endereço http://pt.wikipedia.org/wiki/Tender.

http://pt.wikipedia.org/wiki/Tender

É um artigo bem curto, e nem era sobre o que eu queria ler (que é o "tender" que as pessoas comem, alternativamente a um peru de Natal, até onde já vi).

O problema, que faz o navegador estourar a memória, são 2 palavras no artigo que estão com tamanho explícito, no código fonte HTML, de 4000 pixels! Exatamente 4000! E este tamanho absurdo de fonte, por um motivo técnico que nem me interessa saber com exatidão, causa um gasto horroroso de memória. As palavras, ambas ocorrêndo apenas uma vez no artigo, como confirmei, são "Último" e "Próximo".

As linhas de código fonte HTML com os 2 problemas estão abaixo, envolvidas por "--", pra ajudar:

--
<div class="nodeco" style="position:absolute; font-size:4000px; font-weight:lighter; font-style:italic; line-height:1em; vertical-align:top;">Último</div>
--
<div class="nodeco" style="position:absolute; font-size:4000px; font-weight:lighter; font-style:italic; line-height:1em; vertical-align:top;">Próximo</div>
--

Se estas palavras são consequência direta do código fonte wikipediano do artigo, e portanto deverão ser efeito de algum vandalismo facilmente localizado e de algum usuário, ou não, vocês poderão me dizer.

Se forem algum erro de configuração ou sei lá o que do sistema, afetando possívelmente vários outros artigos com características semelhantes a este, acho que nesta lista vocês saberão pra onde deve ser comunicado o problema. Imagino que o Rodrigo poderá fazer tal comunicação.

E, por favor, quem responder esta mensagem, não se esqueça de me colocar como destinatário também! Não só da primeira resposta, como das possíveis outras respostas subsequentes! Eu não faço mais parte da lista, mas gostaria de receber todas as mensagem da possível discussão deste problema.

Fico aguardando. Espero ter colaborado, e agradeço antecipadamente ao que vier.

Atenciosamente,

André


_______________________________________________
WikimediaBR-l mailing list
WikimediaBR-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikimediabr-l

Responder a