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?