Caso di studio

Tracciare fino a una perdita di handle un crash dopo un lungo funzionamento

Caso di studio su un crash che compariva soltanto dopo circa un mese, ristretto all’indagine su una perdita di handle mediante punti di osservazione ordinati e log potenziati.

Panoramica del caso

Questo caso riguarda un’app Windows che si arrestava improvvisamente solo dopo circa un mese di funzionamento continuo. Partendo dall’organizzazione dei punti di osservazione, abbiamo ristretto infine l’indagine a una perdita di handle. Il punto importante non era solo la causa, ma decidere quali osservazioni preparare per prime.

Sintomi

  • Il crash non appariva dopo pochi giorni, ma solo dopo un funzionamento prolungato.
  • Dal solo modo in cui compariva l’eccezione era difficile stabilire se vi fosse una perdita.
  • Il problema si verificava solo sul campo; sulla macchina di sviluppo occorreva comprimere la riproduzione.

Vincoli

  • Attendere un mese per ogni riproduzione non era realistico.
  • Poiché il percorso comprendeva riconnessioni della telecamera e casi anomali, i soli log del percorso normale non bastavano.
  • Dovevamo poter osservare continuativamente quale risorsa stesse aumentando.

Cosa abbiamo osservato

  • Heartbeat di Handle Count, Private Bytes e Thread Count
  • Log di confine all’avvio della sessione, alla riconnessione e alla chiusura
  • Log del ciclo di vita accoppiati fra create/open/register e close/dispose/unregister

Come abbiamo ristretto il campo

Invece di inseguire il «crash dopo un lungo funzionamento» così com’era, abbiamo compresso la riproduzione nei percorsi di errore legati alla riconnessione e al timeout. Il risultato ha reso più ragionevole sospettare una perdita di handle anziché una perdita di memoria, concentrando lì l’osservazione.

Come abbiamo migliorato

  • Abbiamo aumentato gli elementi monitorati per seguire non solo il momento del crash ma anche la tendenza alla crescita.
  • Abbiamo ordinato i log di confine per rendere più facile capire quale responsabilità apre e quale chiude una risorsa.
  • Abbiamo organizzato i risultati affinché possano confluire nella successiva base di test dei casi anomali.

Servizi collegati a questo caso

Questo caso riguarda sia l’analisi dei malfunzionamenti e delle cause, per guasti che compaiono solo dopo un lungo funzionamento, sia lo sviluppo di applicazioni Windows, per sistemare dal lato implementativo log, riconnessioni e osservazione operativa.

Contattateci

Se questa pagina descrive una situazione simile alla vostra, indicateci il contesto attuale e il tipo di supporto necessario.

Torna alla home