Metodo per testare / riprodurre Heisenbug possibilmente correlato al servizio di scheduling di classi multimediali?

5

Il problema

Sto cercando un bug in un'applicazione web relativa a multi-upload usando un filmato / applet Flash. A volte, la barra di avanzamento utilizzata nell'applet Flash per indicare lo stato di avanzamento del caricamento del file sarà superiore al 100% per un avanzamento e causerà l'arresto dell'intero sistema di caricamento.

A parte gli errori logici associati al resto di quel codice, tentare di riprodurre questo bug per tracciare l'esecuzione e il debug è un'impresa in sé. È un Heisenbug , e l'ho visto solo una volta in circa due giorni di tentativi. Le macchine di altri sviluppatori possono riprodurle con maggiore regolarità.

L'unica volta che l'ho riprodotto era il riavvio dopo aver modificato la chiave di registro per SystemResponsiveness , poiché la mia macchina utilizza Windows Server 2008 R2. Quella chiave del Registro di sistema controlla la priorità della CPU per le applicazioni multimediali. Windows Server 2008 R2 imposta questa chiave su 100 (dando priorità alle applicazioni multimediali con bassa priorità), mentre imposto il mio su 20 in quanto è impostato su un'installazione desktop di Windows 7. Tutte le altre macchine sviluppatore in grado di riprodurre questo problema hanno SystemResponsiveness impostato su 100 predefinito.

Quando ho impostato il mio SystemResponsiveness su 100 , ho visto immediatamente questo problema. Tuttavia, la riproduzione del problema è ancora discutibile.

La mia teoria

Quindi sto partendo dal presupposto che questo bug, dato che coinvolge Flash, è correlato alla chiave di registro SystemResponsiveness come descritto nella documentazione di Microsoft per Multimedia Scheduler Service , che è il sottosistema multimediale di Windows 7 e Windows 2008 R2.

Impostando la sensibilità su 100, i file multimediali come i "filmati" di Flash (che è questo uploader) possono incontrare problemi, e questo diventa un problema di temporizzazione / interruzione per l'uploader, che quindi si manifesta con altri bug.

Come testare?

Ora sto cercando di trovare un modo per testare questa teoria. Penso di aver bisogno di un processo in background per collegare l'utilizzo della CPU al 100% (su 4 core), quindi provare a utilizzare l'uploader. I servizi in background / non multimediali dovrebbero causare cose come Flash a peggiorare e dovrei incorrere in problemi.

modifica

Ho deciso di eseguire uno stress test della CPU per impilare l'utilizzo della CPU del mio sistema al 100% - a parte il rallentamento della mia macchina, il bug non si è manifestato. Questo Heisenbug è davvero una riproduzione elusiva.

La mia richiesta

Tuttavia, non sono sicuro che sia l'approccio corretto per testare la mia teoria, quindi mi chiedo se qualcuno abbia qualche idea su come rintracciare i problemi relativi a MMCSS?

    
posta wkl 27.02.2012 - 19:39
fonte

1 risposta

1

Questo suona sicuramente come una condizione di gara, e quelli sono davvero difficili da forzare per accadere in modo coerente. Potrebbe essere molto difficile trovare uno scenario che riproduca coerentemente il problema, perché ci sono alcune variabili coinvolte.

Il massimo della CPU è stato un buon primo colpo. La prossima cosa che proverei sarebbe di mettere un po 'di carico sul disco. Poiché si tratta di un uploader di file, potrebbe trattarsi di un problema I / O invece di un problema di CPU puro.

Se ciò non funziona, diventerei veramente buoni amici con qualcuno che può farlo accadere spesso, se non costantemente. Misura la probabilità che accada sul sistema di quella persona prima di apportare qualsiasi modifica. Poi vedi se le tue modifiche hanno qualche effetto sulla probabilità.

Potrebbe essere meglio prendersi il tempo di scrivere una sceneggiatura per farcela. Probabilmente ripeterai molto questi passaggi.

    
risposta data 12.06.2013 - 04:41
fonte

Leggi altre domande sui tag