|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
[Win] Socket aperto da un processo inesistente
Mi sto ritrovando di fronte ad una situazione insolita:
ho un programma scritto da me che apre un socket server e fa le solite cose che ci si aspettano da un server. Su una macchina (e solo su questa) quando chiudo il server il processo non risulta più visibile dal taskmanager, ma se vado ad eseguire netstat -nab ottengo che il pid del vecchio processo ha ancora aperto il socket (il processo è però associato a "Sistema" invece che all'eseguibile corretto). Infatti successive istanze mi avvisano che la porta è già occupata. Oltretutto risulta ancora un client connesso ed effettivamente se vado ad analizzare il client pare effettivamente essere così. Ok a questo punto uno pensa: bene un bug di programma ti sei dimenticato di chiudere il socket (anche se abilitando i log vedo che la chiusura dà ok). Ora però mi accorgo che in realtà il processo è ancora in esecuzione perchè se termino il socket in ascolto tramite tcpview, vedo che questo viene riaperto (comportamento previsto dal programma) dallo stesso PID che non risulta esistente nè tramite task manager nè process XP. Se provo ad eseguire PSKill tramite il pid del processo ottengo un fantastico accesso negato. Segno che il processo effettivamente esiste! Altrimenti dovevo ottenre il messaggio che il processo non esiste. Ovviamente sono amministratore quindi ho i permessi per eseguire il kill. Il processo non è un servizio. Domanda: in cosa cavolo sono incappato? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2788
|
Che casino! Ma quindi se provi a contattare il server da client dopo aver chiuso il server, quest'ultimo continua a rispondere correttamente?
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Solo che il programma non ha mai dato questo tipo di problema, almeno non su un altro centinaio di macchine... |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
secondo me il socket non c'entra niente, é un problema di altra natura: il processo c'é e continua a funzionare, mi pare ovvio, solo che non si chiude e se provi a chiuderlo scompare dall'elenco dei processi ma resta in funzione. curiosissimo che quando il processo ti entra in questo stato strano i suoi handles (perlomeno il socket) vengano associati a "Sistema"; per "Sistema" intendi l'account built-in o il processo System (quello col PID 4)?
di preciso su che sistema stai? |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Prima della chiusura dell'applicativo invece appare il nome dell'eseguibile correttamente. Il sistema è WinXP SP3. Ultima modifica di tomminno : 27-11-2009 alle 17:13. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:52.




















