Método para testar / reproduzir o Heisenbug possivelmente relacionado ao Serviço do Agendador de Classes Multimídia?

5

O problema

Estou procurando um bug em um aplicativo da web relacionado a vários uploads usando um filme / applet do Flash. Às vezes, a barra de progresso usada no applet Flash para indicar o progresso do upload do arquivo será de mais de 100% para um progresso e fará com que todo o sistema de upload seja interrompido.

Além dos erros lógicos associados ao restante do código, tentar reproduzir esse erro para rastrear a execução e depurar é um feito por si só. É um Heisenbug , e eu vi isso apenas uma vez em cerca de dois dias de tentativas. Outras máquinas de desenvolvedores podem reproduzi-lo com mais regularidade.

A única vez em que o reproduzi foi a reinicialização depois de alterar minha chave de registro para SystemResponsiveness , pois meu computador usa o Windows Server 2008 R2. Essa chave do registro controla a prioridade da CPU para aplicativos de multimídia. O Windows Server 2008 R2 define essa chave como 100 (dando prioridade muito baixa aos aplicativos de multimídia), enquanto eu configuro o meu como 20 , pois é para isso que uma instalação do Windows 7 para desktop o define. Todas as outras máquinas de desenvolvedor que podem reproduzir esse problema têm SystemResponsiveness definido como padrão 100.

Quando eu defino meu SystemResponsiveness de volta para 100 , eu imediatamente vi esse problema. No entanto, reproduzir o problema ainda é irregular.

Minha teoria

Portanto, vou supor que esse bug, que envolve o Flash, esteja relacionado à chave de registro SystemResponsiveness , conforme descrito na documentação da Microsoft para Serviço Scheduler de Classe Multimídia , que é o subsistema multimídia do Windows 7 e Windows 2008 R2.

Ao configurar a capacidade de resposta para 100, multimídia como Flash 'movies' (que este uploader é) pode encontrar problemas, e isso se torna um problema de tempo / interrupção para o uploader, o que faz com que outros bugs se manifestem.

Como testar?

Agora estou tentando encontrar uma maneira de testar essa teoria. Eu acho que eu preciso ter um processo de background peg o uso da CPU em 100% (através de 4 núcleos) e, em seguida, tentar usar o uploader. Os serviços em segundo plano / não multimídia devem fazer com que coisas como o Flash tenham um desempenho pior e eu deveria ter problemas.

editar

Eu decidi executar um teste de estresse da CPU para atrelar a utilização da CPU do meu sistema em 100% - além de fazer com que minha máquina ficasse lenta, o bug não se manifestou. Esse Heisenbug está realmente evitando a reprodução.

Meu Inquérito

No entanto, não tenho certeza se essa é a abordagem correta para testar minha teoria, por isso estou pensando se alguém tem alguma idéia sobre o rastreamento de problemas relacionados ao MMCSS?

    
por wkl 27.02.2012 / 19:39
fonte

1 resposta

1

Isso definitivamente soa como uma condição de corrida, e isso é realmente difícil de forçar a acontecer de forma consistente. Pode ser muito difícil encontrar um cenário que reproduza consistentemente o problema, porque há algumas variáveis envolvidas.

Maximizar a CPU foi um bom primeiro disparo. A próxima coisa que eu tentaria seria colocar alguma carga no disco. Como esse é um uploader de arquivo, pode ser um problema de E / S em vez de um problema de CPU.

Se isso não funcionar, então eu me tornaria muito amigo de alguém que pode fazer isso acontecer com frequência, se não consistentemente. Meça a probabilidade de que isso aconteça no sistema dessa pessoa antes de fazer qualquer alteração. Em seguida, veja se suas alterações afetam a probabilidade.

Pode ser melhor reservar um roteiro para passar por isso para você. Você provavelmente vai repetir muito essas etapas.

    
por 12.06.2013 / 04:41
fonte

Tags