# A Árvore [link]

2011-07-01 tag_movies ^

Estava aguardando ansioso por esse dia. E confesso que foi exatamente como eu esperava. Com uma direção focada em contar sobre uma família que vive às sombras de uma gigantesca árvore que serve de confessionário, com direito a cenas de pseudo-terror (com reflexo no vidro do carro seguido por câmera lateral) e com uma visão bem peculiar sobre como conduzir a vida, apesar dos infortúnios que atingem todo mundo.


# Além da Vida [link]

2011-07-01 tag_movies ^

Para quem não havia assistido o trailer do novo trabalho de Clint Eastwood (Menina de Ouro) tem a impressão que os conflitos do primeiro ato são apresentados de uma maneira mais impactante do que um drama seria capaz. Como o exemplo mais marcante, escolho a situação em que se encontra Marie LeLay (Cécile de France), uma jornalista de sucesso e que passa o momento mais claustrofóbico do longa.

A disposição dos elementos do cenários, dos próprios personagens e, principalmente, dos enquadramentos utilizados fazem com que o acontecimento que está por vir se torne estarrecedor por natureza, mas não totalmente imprevisto. Toda a tensão da sequência está contida no pequeno diálogo entre Marie LeLay e seu parceiro que cria uma empatia quase automática, fruto da interpretação altamente eficiente dos dois. O movimento das águas torna a atmosfera caótica, onde nós mesmos ficamos apreensivos pela dificuldade que aparenta ser escapar de um desastre desses.

E na outra sequência igualmente impactante, mas menos imprevisível, Clint Eastwood não nos poupa uma cena forte que se torna ainda mais forte graças novamente ao trabalho do elenco dos irmãos McLaren, que faz um trabalho tocante até aquele momento demonstrando como os dois irmãos conseguem segurar os problemas da mãe e cuidar da casa, dos deveres da escola e até em protegê-la do pessoal de adoção, tudo junto.

Fotografia eloquente com o tema, pois apresenta-nos uma realidade tocada por um leve borrão de cores e luzes que tornam a experiência um pouco mais elevada que a simples realidade.

Usando uma trilha sonora que lembra muito seu trabalho anterior, Menina de Ouro.

É curioso que a personagem de Cécile de France de repente necessite escrever sobre sua experiência.

Toda a tensão construída e as histórias independentes são abortadas por uma tentativa artificial de juntá-las, e ainda por dar um final feliz em premissas que não parecem tão importantes de serem resolvidas. Dessa forma, se a tensão inicial é exemplar, o filme vai cada vez mais se enfraquecendo, até o ponto em que temos um filme comum, sem nada de mais.

Interpretações competentes na média, com especial destaque para os irmãos McLaren, que encantam em todos os momentos que contracenam.


# Entrando Numa Fria Maior Ainda com a Família [link]

2011-07-01 tag_movies ^

Filme um pouco mais recatado que os outros da série, traz piadas mais contidas, um senso mais família, com De Niro no automático e Ben Stiller pouco inspirado em suas caretas.

Ainda sai de tom com conflitos montados e desmontados na mesma hora, como a participação "especial" de Hoffman encontrando sua mulher com o simpático Kevin (e o beijo entre eles logo se desfaz), ou a luta final entre Jack e Greg, quando, ao entrar na ambulância, Jack confessa ter notado ele falar a verdade quando disse sobre a noite passada pela pulsação (e por que continuaram brigando?)


# Os Pinguins do Papai [link]

2011-07-04 tag_movies ^

Sinopse: A vida de um homem de negócios começar a mudar após ele herdar de seu pai seis pinguins. Conforme ele avança em sua vida pessoal, sua vida profissional começa a despencar.

Odeio falar mal dos filmes que não gosto, mas Os Pinguins do Papai é fraco, oportunista e covarde.

Fraco porque não consegue de fato criar um arco dramático que se preze. Se no começo enxergamos Mr. Popper como um vendedor sem escrúpulos, quando ele começa a conviver com os pinguins enxergamos, na verdade, o mesmo Mr. Popper coagido pela sua família, especialmente os filhos, a quem tenta agradar sempre sem sucesso. Mesmo que isso seja um ótimo tema para comédia, ela não chega a decolar, tamanha a fascinação do diretor em focar as gracinhas dos seis (sete com Popper?) pinguins em cena.

Oportunista porque se aproveita do fato dos pinguins estarem na moda (nada contra, vide Happy Feet) e os traz à tona apenas para transformar um roteiro fraco em no máximo um filme fofinho (e nem assim ganha do magnífico Bebês). E apenas para ilustrar, tente se lembrar das cenas que você mais gostou e veja se consegue achar alguma que não tenha pinguins ou piadas tão "aprimoradas" quanto as boladas das comédias da dupla Adam Sandler e Dennis Dugan (ou do próprio Jim Carrey em momentos menos inspirados de sua carreira).

E, enfim, é Covarde porque simplesmente parece não conseguir finalizar a história sem deixar todos felizes (e acompanhados). E se na cena final eu até consigo fazer um paralelo com as novelas globais, tenho certeza de que não há mais nada abaixo desse nível que mereça ser visto.

Dito isto, que venha Happy Feet 2.


# Transformers: O Lado Oculto da Lua [link]

2011-07-06 tag_movies ^

É muito difícil para quem começa a estudar aos poucos os segredos do cinema descobrir o que faz um filme ruim. Apenas o fato de não gostar do que se vê não é argumento satisfatório para entender quais mecanismos estão ali (ou não) para sabotar por completo uma experiência cinematográfica tão bem sucedida tecnicamente, como para mim foi esse Transformers 3.

É muito óbvio perceber pequenos erros de montagem, que é quando uma cena não casa com a próxima, ou um conjunto delas. Mas isso por si só não deixa o filme, como um todo, em um patamar inaceitável. Faz parte do jogo. O nosso herói desajeitado Sam (LaBeouf) possui uma função pré-determinada desde o início dessa "trilogia", que é servir de representante para todos nós, adolescentes tarados por loiras gostosas e carros potentes que adora vê-los se transformar em robôs e "brigar pra valer". E tudo bem. Agora, isso não justifica vermos o rapaz em uma situação de perigo, e, logo em seguida, ele aparecer de um ângulo mais alto, posando de gatinho para um pôster do novo sucesso de Michael Bay.

Olhando dessa forma o filme (e ele nos faz enxergar assim), temos a sua trama patética desmascarada, o que faz perder toda a graça nas cenas de tensão. Porém, dessa vez temos uma obra de maestria técnica de encher os olhos em 3D. É possível perceber a profundidade de campo na maioria das cenas de ação, e quando isso ocorre dentro de um prédio em movimento angular porque está se despedaçando, é espetacular. De verdade!

Só que não é só de imagens que vive o cinema. Sim, um filme é uma sequência de imagens inicialmente desconexas, mas que, ao serem editadas, se transformam em linguagem, possuem respiração própria e contam a história que quiser. Aqui há apenas as imagens desconexas e só. Sozinhas, elas possuem o efeito vitrine que comentei, mas juntas, elas não revelam nada. Apenas uma longa, e angustiante, experiência.


# E foi-se o TDC

2011-07-07 ^

Dessa vez, talvez pelo dia de semana, havia poucos participantes. Isso, contudo, não evitou que o conteúdo e a qualidade das palestras fosse, como sempre, de alto nível.

Infelizmente, só cheguei a partir da palestra de Antonio Ribeiro sobre uma Simulação Distribuída focando no trânsito de São Paulo. Há tempos esse é um tema debatido e ainda acredito que a tecnologia ainda vai resolver isso da melhor maneira possível: cada um em sua casa.

Depois do agradável almoço, onde tive a oportunidade de rever DQSoft e conversar sobre leituras de ficção-não-necessariamente-científica, participamos de um pequeno review sobre escrita de código seguro. Ao menos não tivemos que ouvir novamente algum representante da Microsoft falando sobre a famigerada lib que refazia as funções do C para a versão com copyrights.

Então chega a vez da palestra mais bagunçada: a minha. Juro que perdi totalmente o fio da meada no início, e quanto mais me esforçava para lembrar o que devia ser dito, mais esquecia. Então resolvi partir direto para o hands-on, onde consegui, imagino eu, com um ritmo adequado, demonstrar todo o cenário da análise do Dicionário Houaiss que tinha feito anos atrás. E pelo visto, muitas pessoas gostaram, pois fui abordado por três ou quatro participantes muito simpáticos e entusiasmados com o tema. Talvez seja hora de voltar para esse submundo mais um pouquinho, fazer coisas mais hardcore pra variar...

Depois do coffee-açucarado-break, tivemos a palestra mais interessante do dia: desenvolvimento de microkernels, apresentado por Rodrigo Almeida, professor de Eletrônica e Programação de Embarcados da Unifei. Não só o tema me interessou ao máximo, como a didática da apresentação foi impecável, abordando tanto os pontos for-dummies quanto um gostinho do que seria fazer por nós mesmos um controle intermediário entre a placa e os programas.

Ao final, nosso mestre-de-cerimônias habitual Alberto Techberto Fabiano fez a abertura de um painel tentando mesclar problemas + experiência + vontade de aprender. Dos assuntos que me lembro, chamou a atenção o fato dos profissionais da linguagem (C/C++) estarem escasseando cada vez mais e também o fato de nosso Grupo C/C++ parecer praticamente invisível aos olhos do Google, pois parece que quase ninguém consegue encontrar o dito cujo.

Infelizmente, alguns compromissos inadiáveis me fizeram ter que sair pela esquerda e esquecer o Lado B da questão. Felizmente, esse não é o nosso último encontro, e espero participar de futuras oportunidades de me integrar à nossa agora, como diz meu amigo Pikachu, comunidade maçônica.


# The Housemaid [link]

2011-07-08 tag_movies ^

O longa possui algumas reviravoltas que podem soar esquisito à cultura ocidental, mas a base do drama, que são os acontecimentos macabros rodeando a honrada família do professor de piano, criam um clima, se não de tensão, definitivamente macabro e sexy.

Existe na literatura e no folclore em geral muito sobre o mito da viúva negra, por analogia ao comportamento reprodutivo dessa espécie de aranha. Cada um interpreta de uma forma. A forma visceral mostrada aqui por Ki-young Kim espanta pelo erotismo crescente, mesmo que não existam muitas cenas “picantes. O que vemos, na verdade, é um flerte muito bem construído entre vida e morte, entre ascenção e decadência (mais decadência).

Quando a empregada se veste de preto tudo começa a se acelerar em direção ao inevitável e trágico final. Visualmente essa construção une de forma inteligente o tom escuro da vestimenta da empregada e o completo contraste com o branco puro, inocente e servil da matriarca. Não existe meio termo. E Ki-young Kim não irá nos poupar de toda a maldade e egoísmo humano para demonstrar, de uma maneira um tanto hardcore, que é isso que nos faz humanos.


# Operação Presente [link]

2011-07-12 tag_movies ^

A nova animação da Sony parte para o óbvio gênero de filmes natalinos dessa época, mas faz bonito: Operação Presente subverte nossos conceitos do que é atualmente o natal, parte do ponto de vista do Papai Noel e seus elfos e acusa de maneira inteligente o modo superficial pelo qual muitos de nós enxergamos essa data que um dia foi muito especial.

O filme começa com a leitura de uma das inúmeras cartas que são endereçadas ao bom velhinho, de uma menina em uma cidadezinha da Inglaterra que faz perguntas que são respondidas enquanto deslumbramos todo o esquema que é montado para que o Papai Noel consiga entregar presentes para tantas crianças em uma única noite. Também é mostrado como ele pode viver através de séculos, quando na verdade há uma sucessão de "Papais Noel", na verdade, mais incrível é saber que o atual tem dois filhos: Steve, que faz a parte "operacional" da entrega dos presentes, e Arthur, o mais novo e mais empolgado com a data mágica.

Enquanto detalhes do escritório de Arthur o mostram como um lugar aconchegante, com pilhas de cartas escritas à mão pelas crianças e enfeites natalinos iluminados com cores quentes, em contraste temos a aparência limpa e sofisticada do centro de controle onde ficam os elfos. Dessa forma, a tecnologia dos dias de hoje acaba ganhando sua representação no próprio Papai Noel, que voa agora com uma nave ultrarrápida e trabalha em conjunto com milhares de elfos como ajudantes na entrega dos presentes.

Contudo, mesmo com todo esse controle, uma criança acaba sendo esquecida, e esse é o ponto de partida para a Operação Presente do título. A consequência mais triste é que ela acaba virando uma porcentagem mínima se comparada com todas as crianças do mundo e entra no "controle de qualidade" de Steve como uma reles margem de erro, como se não houvesse uma criança por trás do número. Nesse momento, nos perguntamos se isso de certa forma torna todo o processo frio, automático e sujeito a racionalizações como a que é feita por Steve para justificar o "sucesso" da operação. E quantas vezes não fazemos o mesmo, nos esquecendo do essencial para nos focarmos em detalhes periféricos? (Apenas para dar um exemplo fora de contexto, quantos torcedores de futebol hoje se concentram bem mais nas estatísticas do seu clube do que nos jogos e jogadores em si?)

Nesse sentido, a forma espontânea, embora atrapalhada de seu filho mais novo fazem um contraponto à toda aquela eficácia, e trazem à frente os valores mais essenciais do natal: as crianças. É nesse momento que o roteiro tem a sacada genial de apresentar o trenó do Papai Noel como um elemento nostálgico na trama, simbolizando as coisas feitas à mão. Note que o trenó em si não seria de muita importância em um filme tradicional de natal, mas aqui ganha um significado tão poderoso quanto o próprio trenó-chave de Cidadão Kane.


# Carros 2 [link]

2011-07-20 tag_movies ^

O ponto mais forte no longa original eram as ideias por trás do conceito de carros se comportando como humanos. E até os pequenos detalhes de produção, como o fato dos mosquitos voando serem pequenos carrinhos com asas, contribuíam para tornar aquele universo todo especial.

Dessa vez o que temos é uma história centrada no personagem Mate, o caminhão-reboque que virou melhor amigo do Relâmpago McQueen e que agora se sente deslocado em relação ao amigo e os ambientes requintados que ele frequenta em suas corridas pelo mundo.

Sim, é uma história batida. E, pior, cheia de clichês. E clichês que não funcionam como deveriam. O que resta são as piadas do Mate, sempre recheadas com a divertida dublagem de Mário Jorge, que aqui arrisca algumas expressões regionais e contemporâneas que podem prejudicar o filme a longo prazo, mas que nos cinemas de hoje funcionam muito bem.

O fato é que apenas com a dublagem de Mate o filme é divertido do começo ao fim, mas como filme, não chega nem a desafiar os roteiros menos brilhantes que a Pixar já teve ao longo desses 25 anos.


# Harry Potter e as Relíquias da Morte - Parte 2 [link]

2011-07-22 tag_movies ^

Prólogo

Um filme que carrega o peso de uma saga que dura quase dez anos merece um final, no mínimo, apropriado. Felizmente, nas mãos do visualmente habilidoso David Yates, essa premissa é cumprida com louvor.

Iniciando em 2001 com um longa feito praticamente para o público infantil, a história do menino bruxo que sobreviveu à morte dos seus pais ganhou contornos nunca antes vistos. O crescimento dos atores e dos personagens que estes interpretavam coincidiu com o crescimento do seu próprio público - muitos leitores dos livros originais, outros não - e, de uma certa maneira, com o crescimento e amadurecimento da própria saga. Posso confessar, sem vergonha nenhuma, que o primeiro filme me desanimou muito, a ponto de me fazer pular as sessões de cinema do segundo e terceiro. No entanto, ao dar uma olhada mais de perto pude perceber esse detalhe fascinante do crescimento da história e dos seus personagens, o que me fez voltar ao cinema, ato este do qual nunca mais me arrependi.

A evolução da saga fez coincidência com a minha própria evolução como cinéfilo. A cada novo filme enxergava mais coisas e encontrava mais significados. Não havia repetição. Cada novo filme era uma possibilidade nova de enxergar outros aspectos do universo fascinante criado por J. K. Rowling. Porém, como todo universo criativo, um dia ele deve chegar, não ao seu fim, mas à sua eventual conclusão. Para muitas séries defasadas, o fim chega a ser até um alívio. Nesse caso, contudo, pode-se dizer que foi uma triste, mas necessária, despedida.

Início

O último filme é a segunda parte da divisão cinematográfica que foi feita do sétimo livro, que continua na busca do trio Harry, Ron e Hermione, pelas últimas três Horcruxes de Voldemort que, se destruídas, conseguiriam evitar a imortalidade que este persegue desde a sua infância como Tom Riddle. Ainda que com uma fotografia igualmente sombria, o tom psicológico muda de figura. Diferente do isolamento físico do trio principal presenciado na primeira parte, temos a reunião dos bruxos contrários à ditadura do Lorde das Trevas, e tentam, portanto, resistir bravamente até o último momento.

Com um início mais do que emocionante, o roteiro de Steve Kloves mais uma vez impressiona por inserir no meio da trama as razões que levaram um certo personagem-chave às suas ações, incluindo aí uma reviravolta nada menos do que espetacular, pois nos faz passear por todos os detalhes de todos os livros da saga. A mágica, nesse caso, sai da própria história, e nos faz pensar sobre a ambiguidade em vários momentos da trama. Mais do que isso: consegue resumir uma lição muito importante sobre a vida e sobre a nossa própria geração, que se acostumou com uma figura do mal não necessariamente má em sua maneira de ver a vida. Se o próprio Magneto dos X-Men consegue argumentar com motivos válidos porque ele não confia na humanidade, e portanto, realiza ações condenáveis pelos humanos, aqui navegamos pelo consciente do próprio personagem-chave, onde conseguimos capturar a essência dos seus atos e, por fim, entendê-lo por completo. Se os livros de Rowling conseguiram esse efeito, não sei dizer. Porém, a mágica do cinema é construída exatamente com essa expressão visual, e da mesma maneira essa passagem demonstra que o próprio bem, às vezes, fica estereotipado por tantas vezes que acaba nos enganando quando toma vestes de uma realidade intangível até então.

Aliás, como não-leitor dos livros de Rowling, é preciso dizer que o maior mérito da saga como filme é funcionar bem unicamente para o cinema, sem depender de muletas que muitas vezes são necessárias para que uma história literária adaptada se torne coerente. Nas últimas produções da saga, então, é preciso dizer mais: a direção de Yates praticamente recria Hogwarts e seus personagens e os desprendem de sua visão romantizada, inserindo-os, por exemplo, no contexto político do quinto e sexto filmes.

Um ótimo exemplo dessa adaptação é quando vemos Voldemort empunhar a sua poderosa varinha. Note como a câmera realiza um magnífico travelling em torno dela, denunciando suas rachaduras e mostrando visualmente, portanto, que algo o está debilitando. Da mesma forma, em outro exemplo que foge ao livro são os momentos que Harry e Voldemort são atingidos ao mesmo tempo por uma força invisível, capacitando o espectador unicamente cinematográfico a entender a ligação essencial entre os artefatos (as relíquias da morte) e a dupla herói e anti-herói.

Ainda sobre as adaptações para o filme, as devidas homenagens aos tantos personagens que, às vezes por breves momentos, outras por vários filmes, fizeram parte desse universo, é feita organicamente. Confiante na memória e carinho do espectador pela trama, o diretor e sua equipe chegam a nos apresentar elementos episódicos de "anos" atrás, como o pomo de ouro, em uma demonstração exemplar de respeito ao espectador inteligente e atento, ao mesmo tempo que evita supérfluas explicações que tornariam a história desnecessariamente longa.

Mais importante do que trazer os antigos personagens à tona, porém, é permitir que a batalha de Hogwarts traga todos os atuais em sua final e emocionante participação. Dividindo a batalha em momentos mais episódicos, o roteiro se aproveita dos múltiplos cenários e situações para manter o equilíbrio entre ação e diálogos que vão preenchendo a conclusão final da história maior. E apenas o fato de não percebermos a complexidade em orquestrar tudo isso de maneira harmoniosa já é digno de aplausos.

Decorrente dessa união visual que se estabelece de uma maneira progressiva, tanto em tensão como em emoção, o conflito final consegue passar o devido recado de jornada que se termina. E é como se tivéssemos percorrido, assim como Harry, essa longa jornada de proporções épicas, e estivéssemos ali, em puro êxtase, vislumbrando cada pedacinho de cena e cada movimentozinho de câmera. Um deleite cinematográfico como poucos que hoje se consegue provar em uma sala de exibição. O sentimento que fica, felizmente, é de missão cumprida.

Epílogo

Não é fácil se separar de personagens que acompanhamos de longa data. Para os mais jovens, então, o impacto do desprendimento deve ser tão grande quanto a perda real de um ente querido. Não acredito que o universo de Harry Potter fique esquecido por muito tempo. Porém, até aqui, foi muito frutífero para o cinema.

A ideia de um epílogo já existia no livro original, e no filme ficou com a impressão não muito discreta da possibilidade de novas histórias baseadas em uma suposta segunda geração. Mesmo não sendo uma promessa, há o apelo comercial, e se vier, não terá sido uma má ideia. Quando se cria um universo tão rico como esse, a sensação que fica é a de que a mágica desse mundo nunca pode acabar.


# Cuidado com variáveis temporárias

2011-07-26 tag_coding ^

Um dos problemas que a linguagem C++ possui para seus iniciantes é o de não deixar muito explícito partes do seu comportamento, principalmente as partes que lidam com ponteiros/referências e o jogo da vida dos objetos. Às  vezes a coisa fica de tal como complexa que fica até difícil explicar o porquê das coisas.

Por exemplo, vejamos o singelo caso de alguém que precisa formatar uma saída de erro e para isso escolheu um stringstream:

#include 
#include 
#include 
using namespace std;
void LogError(const char* msg)
{
    cerr << "** " << msg << endl;
}
void func()
{
    //doSomething();
    throw exception("sbrubles exception");
}
int main()
{
    try
    {
        func();
    }
    catch(exception& e)
    {
        stringstream ss;
        ss << "Error calling func: " << e.what() << endl;
        const char* errorMessage = ss.str().c_str();
        LogError(errorMessage);
    }
}

Quando chamamos func, ele lança uma exceção que é capturada no main que, por sua vez, formata uma stream e obtém sua string (através do método str) e através dessa string obtém o ponteiro da string em C puro (através do método c_str). Porém, a mensagem resultante na saída-padrão de erro não era o esperado:

Depurando diretamente, vemos que a stream, de fato, contém o que esperávamos. O único elemento errante é justamente o ponteiro obtido através da chamada dupla de métodos.

O porquê isso ocorre só fica óbvio quando vemos a ajuda (ou a assinatura) da função str da classe stringstream:

> Get/set the associated string object The first version returns a copy of the string object currently associated with the string stream buffer.

Ora, a função str retorna uma **cópia** do objeto string usado internamento pelo buffer de nossa string stream. Duas coisas ocorrem em qualquer cópia de um objeto retornada por uma função:

 * A cópia do objeto original e seu desacoplamento (óbvio).
 * A construção de um objeto baseado no original e que, após o fim da expressão onde foi chamado o método, **é destruído**.

Uma vez que a chamada a str termina, é entregue uma instância de uma string que contém a string original que está sendo usada pela string stream para a expressão da chamada, que geralmente vem seguida de uma cópia:

   //
   // 1. str retorna uma cópia;
   // 2. atribuição copia retorno para buf.
   //
   string buf = ss.str();

A variável buf no exemplo acima será, portanto, a terceira string usada aqui até então. Ao final da expressão, a string intermediária retornada por str é automaticamente destruída, por se trata de uma cópia temporária para obedecer a sintaxe de retorno da função.

Agora, o que acontece se, **na cópia temporária**, é feita uma operação para obter seu ponteiro interno usado para armazenar sua string estilo C?

Obviamente ele fica inválido após o fim da expressão!

Vamos ver em câmera lenta:

Nada como assembly fresquinho para refrescar os conceitos de C++ por baixo dos panos.

Update

Após uma enxurrada de programadores gerenciáveis perguntarem qual seria, então, a solução ideal, segue o snipet mais explicitado:

   // 1. Copie a string retornada para uma variável não-temporária
   string buf = message.str();
   
   // 2. Use essa string dentro de seu escopo válido (até o final do catch, no exemplo do artigo).
   const char* text = buf.c_str();

Update 2

Outro leitor sugeriu fazer toda a chamada em uma única instrução, economizando em expressividade e ainda evitando a destruição da variável temporária criada ao chamar str.

   // 1. Matar três coelhos com uma instrução só.
   LogError(ss.str().c_str());

Particularmente, gosto de instruções simples que me permitam ver claramente o que está acontecendo de forma simples pelo depurador (até porque sei que o compilador irá otimizar tudo no final em versão Release, ainda mais se estiver quebrado em instruções simples). Porém, toda solução que evita o uso da variável temporária após a execução do método str é válida.


# Depuração de emergência

2011-07-26 tag_coding ^

O programa está rodando no servidor do cliente, que é acessível por sessão remota do Windows, mas de repente ele capota. Existem aí duas possibilidades fora o debug remoto (que, nesse caso, não é possível):

 1. Analisar um dump gerado.
 2. Depurar localmente o problema.

Analisar um dump gerado

Para a primeira opção, basta abrir o Gerenciador de Tarefas, localizar o processo e gerar o dump através do menu de contexto.

Com o dump e o Windbg em mãos, basta analisá-lo. Porém, se o seu processo é 32 bits e o servidor é 64 bits (geralmente é), o dump gerado será de 64 bits, EMBORA seja de um process 32. Ou seja, ao abri-lo, o sistema vai mostrar as threads de manipulação do SO para sistemas 32 (todos com o nosso amigo wow64cpu).

   Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
   Copyright (c) Microsoft Corporation. All rights reserved.
   Loading Dump File [C:\Tests\CrashOnServer.DMP]
   User Mini Dump File with Full Memory: Only application data is available
   Executable search path is:
   Windows 7 Version 7600 MP (2 procs) Free x64
   Product: WinNt, suite: SingleUserTS
   Machine Name:
   Debug session time: Tue Jul 26 09:26:23.000 2011 (UTC - 3:00)
   System Uptime: 0 days 0:35:47.425
   Process Uptime: 0 days 0:00:42.000
   ...........WARNING: MSVCR100D overlaps MSVCP100D
   
   *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
   *** ERROR: Symbol file could not be found. Defaulted to export symbols for wow64cpu.dll -
   wow64cpu!TurboDispatchJumpAddressEnd+0x690:
   00000000`745d2dd9 c3 ret
   0:000> kv
   Child-SP RetAddr : Args to Child : Call Site
   00000000`001ce6c8 00000000`745d282c :  : wow64cpu!TurboDispatchJumpAddressEnd+0x690
   *** ERROR: Symbol file could not be found. Defaulted to export symbols for wow64.dll -
   00000000`001ce6d0 00000000`7464d07e :  : wow64cpu!TurboDispatchJumpAddressEnd+0xe3
   00000000`001ce790 00000000`7464c549 :  : wow64!Wow64SystemServiceEx+0x1ce
   00000000`001ce7e0 00000000`76deae27 :  : wow64!Wow64LdrpInitialize+0x429
   00000000`001ced30 00000000`76de72f8 :  : ntdll!LdrGetKnownDllSectionHandle+0x1a7
   00000000`001cf230 00000000`76dd2ace :  : ntdll!RtlInitCodePageTable+0xe8
   00000000`001cf2a0 00000000`00000000 : : ntdll!LdrInitializeThunk+0xe
   Para entrar dentro do Inception, é necessário usar a extensão wow64exts e usar o comando ".effmach x86".
   0:000> .load wow64exts
   0:000> .effmach x86
   Effective machine: x86 compatible (x86)
   0:000:x86> kv
   ChildEBP RetAddr Args to Child
   ..
   0035ec98 0035ecac 0035ecfc 0035ecac 0035ecfc ntdll_76f80000!KiUserExceptionDispatcher+0xf (FPO: [2,0,0])
   *** WARNING: Unable to verify checksum for CrashOnServer.exe
   WARNING: Frame IP not in any known module. Following frames may be wrong.
   0035f0bc 01181ca9 0035f198 0035f19c 00000000 0x35ecac
   0035f190 01181b7d 009d80a0 5fb4d717 00000000 CrashOnServer!Log::LogError+0x29
   0035fb08 01186f1f 00000001 009d1410 009d1c68 CrashOnServer!main+0x12d
   0035fb58 01186d4f 0035fb6c 76543677 7efde000 CrashOnServer!__tmainCRTStartup+0x1bf
   0035fb60 76543677 7efde000 0035fbac 76fb9f02 CrashOnServer!mainCRTStartup+0xf
   0035fb6c 76fb9f02 7efde000 771dc110 00000000 kernel32!BaseThreadInitThunk+0xe
   0035fbac 76fb9ed5 01181316 7efde000 00000000 ntdll_76f80000!__RtlUserThreadStart+0x70
   0035fbc4 00000000 01181316 7efde000 00000000 ntdll_76f80000!_RtlUserThreadStart+0x1b

Após esse último passo, siga para o último passo desse tutorial. Ou escolha a segunda opção:

Depurar localmente o problema

Para depurar localmente, supondo que seja um executável simples, você precisa dos seguintes itens:

 * Pasta do WinDbg copiado (a Debugging Tools instalada pelo SDK, ou sua pastinha particular guardada no PenDrive).
 * Símbolos dos binários envolvidos (em sincronia com os binários que iremos analisar).
 * Fontes da compilação dos binários (a versão exata seria ideal; grave o revno do controle de fonte pra facilitar).

Os fontes, no caso de uma conexão por Terminal Server, podem ser disponibilizados através do mapeamento de drives entre as máquinas. Os símbolos, no entanto, por serem usados extensivamente pelo WinDbg, é recomendável que estejam locais na máquina depurada, pois do contrário você terá que tomar uma quantidade excessiva de cafés para executar meia-dúzia de instruções.

Supondo que temos tudo isso, só precisamos executar alguns passos básicos para o setup:

1. Abrir o WinDbg e escolher File, Open Executable. Escolha o executável e pare por aí.
2. Na tela de comando do WinDbg (View, Command, ou Alt + 1) execute os comandos abaixo:
   .symfix 
   .sympath+ 
   .reload
   .srcpath 
   .reload /f CrashOnServer.exe
3. Ao executar lm, o módulo cujo símbolo foi carregado deve conter o nome do pdb logo à frente.
   0:000> .symfix c:\tools\symbols
   0:000> .sympath+ C:\Projetos\Caloni\Posts\Debug
   Symbol search path is: srv*;C:\Projetos\Caloni\Posts\Debug
   Expanded Symbol search path is: SRV*c:\tools\symbols*http://msdl.microsoft.com/download/symbols;c:\projetos\caloni\posts\debug
   0:000> .reload
   Reloading current modules
   ......
   0:000> .srcpath C:\Projetos\Caloni\Posts
   Source search path is: C:\Projetos\Caloni\Posts
   0:000> .reload /f CrashOnServer.exe
   *** WARNING: Unable to verify checksum for CrashOnServer.exe
   0:000> lm
   start end module name
   00000000`01170000 00000000`01193000 CrashOnServer C (private pdb symbols) C:\Projetos\Caloni\Posts\Debug\CrashOnServer.pdb
   00000000`745d0000 00000000`745d8000 wow64cpu (deferred)
   00000000`745e0000 00000000`7463c000 wow64win (deferred)
   00000000`74640000 00000000`7467f000 wow64 (deferred)
   00000000`76da0000 00000000`76f4c000 ntdll (pdb symbols) c:\tools\symbols\ntdll.pdb\\ntdll.pdb
   00000000`76f80000 00000000`77100000 ntdll32 (deferred)
4. Feito isso, está tudo OK. Podemos colocar breakpoints, monitorar variáveis, verificar stacks, etc.

Por último, execute o seguinte comando na tela de comandos do WinDbg:

   .hh

E boa sorte =)


# A Serbian Film - Terror sem Limites [link]

2011-07-31 tag_movies ^

Segundo um relatório sobre a Guerra da Bósnia feito pela Agência Central de Inteligência americana, 90% dos crimes de guerra foram cometidos pelos sérvios. Em uma região conturbada política e religiosamente por mais de um século, o povo sérvio se acostumou a um ambiente instável. A grande questão é como isso afeta a moral dessas pessoas.

A história de A Serbian Film gira em torno de Milos, que desde sua apresentação já se revela um ator pornô que não se envergonha do que faz, pois não se incomoda, por exemplo, que seu filho, ainda criança, assista aos seus trabalhos. Aliás, a própria dinâmica entre Milos, sua família e sua colega de trabalho já seria por si só um material revelador da personalidade do protagonista e do ambiente onde ele está inserido, pois, em situações onde normalmente ficaríamos constrangidos, o mesmo não acontece com nenhum dos personagens do filme.

Mesmo com a percepção moral já racionalizada na visão de Milos, porém, como que a elevar essa distorção da realidade a um próximo nível, eis que surge em cena Vukmir, um produtor/diretor que valoriza tanto os filmes pornográficos que os chamá de pura arte. No conceito revelador de Vukmir, a princípio, não existem diferenças entre os filmes desse gênero e a própria vida, principalmente com a vida do povo sérvio e sua situação atual, situação essa evocada muitas vezes por Vukmir, como que a justificar a moral existente entre as pessoas através da situação que é vivida em uma esfera social maior.

Dentro desse ponto de vista, Vukmir considera Milos o expoente máximo dentro dessa arte que, literalmente fornica as colegas de profissão com um instinto animal. Disposto a realizar sua obra-prima usando Milos como protagonista, paga-o uma quantia exorbitante sem sequer conhecer os pormenores do seu projeto.

E não por coincidência, o trabalho do diretor iniciante Srdjan Spasojevic carrega a nacionalidade de sua obra já no título, o que já traz uma dica importante sobre o que o filme tenta nos transmitir em sua controversa história. Chega a ser uma provocação, aliás, pois ao constatarmos a sua gravidade, o que sobra é apenas o título, como um triste reflexo de uma realidade que o mundo fora da Sérvia, muitas vezes, preferiu ignorar.


# Apenas o Fim [link]

2011-07-31 tag_movies ^

Geralmente as condições em que ocorrem a produção de um filme não importam muito, e servem somente a título de curiosidade. Nesse caso, o diretor (e roteirista?) Matheus Souza, estudante de cinema ainda, conseguiu com a ajuda dos colegas o dinheiro necessário para realizar este longa ainda com 19 anos, o que se tornou um exercício de cinema no mínimo competente.

A história é interessante, pois estamos falando de um casal que acabou de terminar e está se despedindo. O filme oscila entre o presente e o passado, tratando do relacionamento entre eles logo após terminarem e passarem seus últimos momentos juntos (Antes do Pôr do Sol?).

Como um exercício de diálogos, o filme se sai extremamente bem, pois as frases criam sempre situações, lembranças e pensamentos que nunca se tornam enfadonhos. Mesmo assim, a situação mostrada não parece muito verossímil: um casal geralmente não termina seu relacionamento de forma tão educada. Porém, o próprio casal reconhece isso em alguns momentos, e é isso que torna a experiência mais humana e palpável.

Por outro lado, são visíveis as tentativas inseguras do diretor de nunca manter a câmera parada por muito tempo, o que é um truque relativamente fácil de notar. Um pecadilho, é verdade, se considerarmos que, de uma maneira essencial, a história passa livre de muletas, e entretem e faz pensar na medida certa.


# Edward Mãos de Tesoura [link]

2011-07-31 tag_movies ^

Mesmo mais de 20 anos depois de produzido, o conto do homem inacabado com tesouras no lugar de dedos continua se sustentando bem, e por vários motivos que fazem hoje de Tim Burton ainda um diretor de destaque.

A concepção de arte de primeiríssima qualidade passa sua mensagem sem precisar de muitos esforços. Apenas com uma ou duas tomadas aéreas mostrando o comportamento da vizinhança do castelo onde vive Edward é possível ter uma noção exata da vidinha que seus habitantes levam. Com o uso excessivo de cores na pintura das casas, na roupa das pessoas e na decoração interna, e ainda, na perfeição e uniformidade das calçadas e jardins, é possível fazer uma comparação instantânea com a morada de Edward, um castelo em tons acizentados interna a externamente e, o mais importante, com um telhado e diversas partes quebradas, como que a externalizar os defeitos do rapaz que ali vive.

Não só esses cuidados impressionam, como a própria atuação de Depp em um dos papéis mais "freaks" de sua carreira terminam por desenhar a mensagem do filme em uma forma quase que completamente visual, ainda que seja preciso pontuar os diálogos e atuação inspirada de Dianne Wiest como Peg, a vendedora de Avon mãe de uma família perfeita, como um excelente contraponto.

Diferente do que possa parecer, Edward, quando descoberto, se dá muito bem com a comunidade, e consegue, através de seus talentos especiais, encontrar o seu lugar na vizinhança, se tornando automaticamente o encanto da pequena vila. É exatamente essa distorção da realidade um dos grandes atributos nas produções de Burton, que exagera aspectos da sociedade e os coloca em destaque para todos verem. Ao final do longa, até me lembrei do Willie Wonka traumatizado de seu A Fantástica Fábrica de Chocolates, e percebi a que níveis essa ideia atingiu em seus últimos filmes.

Ainda assim, o filme acaba por cair em velhos clichês dos anos 80, preferindo usar a figura de um romance improvável (e de um anti-herói igualmente improvável) para chamar a atenção para um conflito que até então não existia. Essa conclusão acaba por constituir um dos pontos mais destoantes da história. Mesmo assim, o aspecto visual do filme se mantém, e consegue figurar entre os grandes exemplos de cinema estético e visual, qualidades ainda em sintonia com o trabalho de Burton, e, por que não, de Johnny Depp.


# Meia-Noite em Paris [link]

2011-07-31 tag_movies ^

Quando sabemos estar admirando o último enquadramento de Meia-Noite em Paris, é de doer o coração. O longa de Allen não só empolga, e muito, no início, como mantém suspenso o interesse pelos personagens (que não são poucos). Acredito que, se fosse possível, assistiríamos mais duas, três, ou até quatro horas de filmagem nesse universo criado por Allen.

Essa característica de tornar os diálogos e as situações sempre interessantes é uma das maiores marcas do cineasta. Diretor de cinema autoral, basta assistir os 15 primeiros minutos de qualquer filme de sua obra para percebermos diversas particularidades que só existem em seus filmes: a ironia, o medo da morte, a beleza da vida na cidade grande, os grandes temas da humanidade.

Dessa vez ele pega Owen Wilson como seu comparsa para que ele reproduza todos os trejeitos de quando Allen atua, fazendo-o se tornar um dos seus representantes mais fiéis. É nítido em sua forma de falar e até em seus gestos, mas mais sutil quando confessa possuir traços menos nobres em sua personalidade, como o sentimento de inferioridade ou o já citado medo da morte.

Mas não é só no roteiro que Meia-Noite empolga: a forma de filmar está aprimorada. A divisão que a fotografia faz, por exemplo, entre os dois mundos que Gil participa, o dia e a noite, é sutil o suficiente para não soar forçado, mas significativo o bastante para que percebamos sem esforço. Há todo um capricho com o mesmo cuidado nas transições criadas por Alisa Lepselter (montadora habitual de Allen), que consegue transitar entre os diversos momentos de uma forma econômica e orgânica. Note, por exemplo, quando Gil deixa Adriana partir e ao mesmo tempo já inicia uma conversa com o excêntrico Salvador Dalí (interpretado por Adrien Brody, que se diverte). Da mesma forma, a recriação da morada de Gertrude Stein (outra bela interpretação de Kathy Bates), historicamente o ponto de encontro dos gênios artistas do início do século, serve metaforicamente como o ponto de encontro de Gil e suas novas amizades.

Com uma conclusão talvez atabanada demais, Allen conclui um dos mais belos trabalhos dessa duas décadas, que já nos brindou com bons e ótimos filmes (O Sonho de Cassandra, Dirigindo no Escuro e Tudo Pode Dar Certo na primeira categoria, enquanto Vicky Cristina Barcelona e Match Point na segunda). No seu ritmo atual de um trabalho, é sempre agradável saber que, pelo menos uma vez ao ano, temos a chance de assistir mais uma obra de um dos mestres da ironia e da celebração da vida.


<< >>