2012-01-30 6 views
8

Recentemente due utenti del nostro software dalla stessa azienda ha iniziato sperimentando chiusure casuali (nessun messaggio di errore, le finestre di dialogo di arresto, chiudere le finestre di dialogo, ecc). Siamo stati in grado di isolare ciò che i due sistemi avevano in comune con un particolare software (un gestore di dispositivi mobili a banda larga). Quando questo software è in esecuzione il nostro software si chiude in modo casuale in un intervallo di tempo di ~ 2 minuti. Se usciamo dal broadband manager il nostro software funziona a tempo indeterminato senza problemi.Processo di essere ucciso da un'applicazione di terze parti (Sprint Smartview)

mi viene in mente alcun motivo per cui non ci sarebbe alcuna interazione tra il nostro software e la loro. La rete non è accessibile dal nostro software e il modem a banda larga non è nemmeno collegato in alcun caso.

Abbiamo fornito un lavoro per il cliente (eseguiamo il nostro software come amministratore o esci dal gestore di banda larga mobile prima di eseguire il nostro software) ma vogliamo risolvere il problema in modo che non debbano preoccuparsi di fare nessuna di queste cose .

ho attaccato un debugger remoto al nostro software, ma non ero abbastanza sicuro dove guardare per indagare esattamente come il nostro software sta morendo. Il debug termina con il codice di uscita 0 quando il nostro processo è terminato.

La mia domanda è, come posso indagare come/perché un processo Win32 è stato ucciso e cosa posso fare per impedire che ciò accada?

Edit: ho aperto il manager a banda larga e le DLL che utilizza in un editor esadecimale e là riferimenti a un eseguibile con lo stesso nome come la nostra. Quindi immagino che questo sia il link. Rinominare il nostro eseguibile risolve il problema per i nostri utenti ma non, purtroppo, la stupidità di Sprint SmartView.

Modifica: Per aiutare la rara altro sviluppatore questo colpisce: se il file eseguibile si chiama phoenix.exe e gli utenti finali sono in esecuzione Sprint SmartView, è per questo che il programma è in modo casuale morendo. Rinominare il tuo eseguibile lo risolverà (o passerà diversi mesi della tua vita cercando di capire chi notificare a Sprint per ottenerlo veramente risolto). Il file che menziona phoenix.exe in particolare è WwanCoreSdk.dll.

+0

se 'il modem a banda larga non è nemmeno collegato' non puoi disinstallare il driver, e poi dire i suoi autori che hanno avuto problemi? – tomfumb

+1

@tomfumb: disinstallare il driver dai computer dei clienti? Certamente spero di no! – ildjarn

+0

@ildjarn: falli fare e perché no? Se un produttore di software scopre di aver installato sul tuo computer un software difettoso (o anche peggio - malevolo) che non stavi utilizzando, non lo disinstalleresti? – tomfumb

risposta

1

Se la vostra applicazione è a 32 bit, cercare di controllare WinAPIOverride32. Ti mostrerà tutte le syscalls fatte per programma, quindi se sei in grado di uccidere il tuo programma correttamente nel log dal gestore menzionato, dovrebbe rendere più facile spiegare perché sta accadendo.

+0

Ottima idea. Se non l'avessi capito, ci avrei provato dopo. – eco

+0

Lo accetterò perché (anche se l'ho capito su un sospetto), molto probabilmente mi avrebbe condotto lungo la strada giusta per capire cosa stava succedendo. – eco

+0

Hmmm che sta solo sopprimendo qualsiasi processo chiamato 'phoenix.exe' senza verificare se è ciò che vuoi uccidere? Almeno alcuni test sui percorsi eseguibili dovrebbero essere eseguiti prima di terminare. Ho anche pensato che la ridefinizione di exefile potesse essere d'aiuto, ma poi ho pensato "dai, chi sarebbe così stupido da produrre un'app così bizzarra?" ;) –

3

Sfortunatamente,

Un processo non può impedirsi essere terminato.

http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx

+1

Questa risposta sembra corretta e filosofica allo stesso tempo. – Lostsoul

+0

Non penso ci sia alcun argomento su * impedendo * al processo di essere ucciso. Avevo l'impressione che l'OP volesse solo scoprire chi lo sta facendo. –

+0

@Kerrek SB: La mia risposta è stata alla domanda dell'OP "... cosa posso fare per evitare che accada?", Cioè niente. – demoncodemonkey