Domanda

Ho riscontrato un errore piuttosto strano che non capisco. Ho creato un'applicazione console C # progettata per essere solo un test per vedere se il mio servizio Web funzionava dall'esterno della mia rete. Tutto ciò che ha fatto è stato provare a connettersi al servizio Web, inviare ogni fase alla console e scriverlo in un file di testo in modo che potessero inviarmi i registri.

Ha funzionato perfettamente su 3 macchine XP (una all'interno della mia rete, 2 all'esterno). Una macchina Vista (aveva un file manifest) ma sulla mia macchina XP dei miei capi (è un ragazzo IT quindi sa cosa sta facendo), ha generato un errore molto strano.

C: \ temp \ testwe ~ 1.exe La CPU NTVDM ha riscontrato un'istruzione illegale

http://www.houseofhawkins.com/roger.jpg">

Ho fatto un po 'di ricerche su Google e sembrava che il suo NTVDM potesse essere stato infastidito, o che ci fosse un virus o qualcosa del genere. Nessuno di questi sembra essere il caso. Non riesco a vedere cosa accadrà perché ciò fallisca in questo modo.

utilizzando il sistema; utilizzando System.Collections.Generic; utilizzando System.Text; utilizzando System.IO;

testwebservice dello spazio dei nomi {     programma di classe     {         FileStream theFile = null;         StreamWriter writer = null;

    static void Main(string[] args)
    {
        Program p = new Program();
        p.testMe();
    }

    private void testMe()
    {
        Console.WriteLine("Entered main method about to create stream");            
        try
        {
            theFile = File.Create(@"jonTestWebService.log");
            writer = new StreamWriter(theFile);
            writer.AutoFlush = true;

            try
            {
                message("Starting test at: " + DateTime.Now.ToLongTimeString());

                Random rand = new Random();

                message("creating new instance of webservice");
                houseofhawkins.testweb webServ = new testwebservice.houseofhawkins.testweb();

                message("calling hello world");
                String helloResult = webServ.HelloWorld();
                message("hello world result = " + helloResult);

                int one = rand.Next(999);
                int two = rand.Next(999);
                message("calling maths method with " + one + " + " + two);
                String mathResult = webServ.mytestMethod(one, two);
                message("Math result is: " + mathResult);



                message("Creating instance of CSJawbreaker");
                CSJawbreaker.InformationService csj = new testwebservice.CSJawbreaker.InformationService();

                message("trying to get the latest version number");
                float version = csj.latestVersionNumber();
                message("Version number: " + version.ToString());

                message("");
                message("Finished all processing at: " + DateTime.Now.ToLongTimeString());
            }
            catch (Exception ex)
            {
                writer.WriteLine("");
                writer.WriteLine(ex.Message);
                writer.WriteLine("");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("could not create stream Writer, " + ex.Message);
        }

        message("");
        message("Press return to exit");
        Console.ReadLine();

        writer.Close();
        theFile.Close();
    }

    private void message(String message)
    {
        if (theFile != null && writer != null)
        {
            Console.WriteLine(message);
            writer.WriteLine(message);
        }
    }
}

}

Sono molto bloccato sul perché il codice sopra potrebbe / vorrebbe farlo. È un po 'quello che voglio sapere e in parte, potrebbe succedere a una macchina reale dei clienti, o è solo la macchina dei miei capi infettata o qualcosa del genere.

Grazie

È stato utile?

Soluzione

Qualcosa non va se si finisce in NTVDM, poiché si tratta del livello di emulazione DOS a 16 bit per XP. Se ciò dovesse accadere di nuovo dopo aver ricopiato il file EXE, esaminerei il software installato sul PC del tuo capo (versione .NET framework, ecc.).

Proverei anche a eseguirlo in WinDbg per vedere dove finisci, ottenere uno stack di chiamate una volta che si guasta ecc., Scommetto che troverai uno strano modulo sullo stack (spyware, ecc.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top