CreateProcess e i Job di Windows Vista/7.

Salve a tutti. Oggi volevo puntare lo sguardo su un flag delle varie CreateProcess, CreateProcessAsUSer, CreateProcessWithTokenW, CreateProcessWithLogonW: CREATE_BREAKAWAY_FROM_JOB. Cosa dice MSDN a proposito dei Job: http://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx Un Job object è un insieme di processi che possono essere maneggiati come fossero un processo unico per alcuni aspetti.. ad esempio, possono avere un nome, possono avere delle…


Kernel Debugging: Pronti? Via..

La prima volta. Ci eravamo lasciati in questa situazione: Windbg avviato as admin, la VM configurata per il kernel debugging su seriale, ma spenta. Se non lo siamo, chiudiamo tutto ed eseguiamo questi passi nell’ordine esatto. Avviamo Windbg “As Administrator”. Verifichiamo che Symbol Path contenga il percorso corretto al nostro symbol store e il riferimento…


Kernel Debugging, prepariamoci..

Salve a tutti. Come avevo promesso in un altro post, oggi vedremo come si può iniziare a fare Kernel Debugging. Il Kernel Debugging è di solito l’ultima spiaggia per uno sviluppatore di applicazioni in user mode, mentre è il pane quotidiano per chi realizza device driver e componenti che interagiscono e si integrano col sistema…


Ok, e adesso come catturo il mio dump?

Adesso che sappiamo come tutto è cominciato, abbiamo le informazioni di base e conosciamo la terminologia, sappiamo perchè i simboli sono importanti, è venuto il momento di catturare il primo dump. Come? Quando? Con quali strumenti? Beh… dipende! Dal secondo post di questa piccola serie conosciamo la differenza tra dump in hang mode e crash…


Perchè i simboli sono importanti?

Nel corso degli anni passati al Supporto Tecnico mi sono (purtroppo) accorto che un argomento (ed uno strumento) molto importante, quasi fondamentale per il debugging è in realtà quasi sconosciuto a molti sviluppatori che lo considerano qualcosa di accessorio ed a volte addirittura una scocciatura: sto parlando dei simboli (ed anche se sono un appassionato,…


Perdita continua delle sessioni in una Web Application: come indagare.

La causa più frequente di perdita delle sessioni è il crash del processo w3wp o il restart dell’AppDomain che processa l’applicazione. Quando si nota che l’applicazione perde le sessioni la prima cosa da fare è abilitare i WebEvent: ASP.NET Health Monitoring http://msdn.microsoft.com/en-us/library/ms178701(VS.80).aspx Si apra il Web.Config e, all’interno del tag <System.Web> si aggiunga quanto segue:…


Ricorrente caso di Stack Overflow

L’applicazione ASP.NET in questione andava in crash di sovente con conseguente perdita di login e di sessione degli utenti collegati. Nell’EventLog veniva registrato il tipico messaggio di errore: Error ID: 1009A process serving application pool %1 was terminated unexpectedly. The process ID was %2. The process exit code was ‘0x%3. La causa di tale problema…


Troubleshooting con Process Monitor

Salve a tutti! Nel nostro lavoro quotidiano, utilizziamo diversi strumenti, Windbg, Process Explorer, Process Monitor, che ci permettono di capire cosa sta succedendo nel sistema operativo in un dato momento, permettendoci di individuare la ragione del problema che stiamo affrontando. Volevo introdurre con questo post il Process Monitor. Mark Russinovich, autore e creatore del tool…


Come determinare se un oggetto .Net è già stato finalizzato

Introduzione Eccoci al mio secondo post. Vediamo insieme una parte di un problema che sto analizzando in questi giorni. Il problema è piuttosto complesso, ma in questo post ci concentriamo su una sottoparte. Ho un dump relativo ad un crash di un processo e il problema, come al solito in questi casi, è quello di…


Troubleshooting di una RemotingException

Questo post analizza un errore a runtime di .NET Remoting. WCF sta rapidamente diventando l’infrastruttura di comunicazione preferita per le applicazioni .NET, ma .NET Remoting è ancora utile in alcuni casi. Specificamente, quando l’interoperabilità non è richiesta ed è necessario passare gli oggetti per riferimento invece che per valore. Il problema A runtime, un client…