Question

J'ai rencontré une erreur plutôt étrange que je ne comprends pas. J'ai créé une application console C # conçue pour être un test permettant de voir si mon service Web fonctionnait en dehors de mon réseau. Tout ce qu’il a fait est d’essayer de vous connecter au service Web, d’afficher chaque étape sur la console et de l’écrire dans un fichier texte afin qu’ils puissent m'envoyer les journaux.

Cela fonctionnait parfaitement sur 3 machines XP (une à l’intérieur de mon réseau, 2 à l’extérieur). Une machine Vista (avec un fichier manifeste) mais sur la machine de mon patron XP (il est un informaticien, elle sait donc ce qu’il fait), une erreur très étrange a été lancée.

C: \ temp \ testwe ~ 1.exe La CPU NTVDM a rencontré une instruction illégale

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

J'ai fait des recherches sur Google et il me semblait que son NTVDM était peut-être encombré, ou qu'il y avait un virus ou quelque chose du genre. Aucun de ceux-ci ne semble être le cas. Je ne vois pas ce qui se passerait pour que cela échoue de cette manière.

using System; using System.Collections.Generic; using System.Text; en utilisant System.IO;

espace de noms testwebservice {     programme de 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);
        }
    }
}

}

Je ne comprends vraiment pas pourquoi le code ci-dessus pourrait / voudrait le faire. C’est en quelque sorte ce que je veux juste savoir et, en partie, cela pourrait-il arriver à une vraie machine cliente, ou bien la machine de mon patron serait-elle infectée ou quelque chose du genre?

Merci

Était-ce utile?

La solution

Quelque chose ne va pas si vous vous retrouvez dans NTVDM, car il s’agit de la couche d’émulation DOS 16 bits pour XP. Si cela se reproduisait après avoir recopié le fichier EXE, j'examinerais le logiciel installé sur le PC de votre patron (version .NET Framework, etc.).

Je voudrais aussi essayer d'exécuter ceci dans WinDbg pour voir où vous vous trouvez, obtenir une pile d'appels une fois qu'il est en panne, etc., je parie que vous trouverez un module étrange sur la pile (spyware, etc.).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top