2008-12-07 8 views
0

J'ai rencontré une erreur plutôt étrange que je ne comprends pas. J'ai créé une application de console C# qui a été conçue pour être juste un test pour voir si mon service web fonctionnait de l'extérieur de mon réseau. Tout ce qu'il a fait, c'est essayer et se connecter au webservice, sortir chaque étape vers la console et l'écrire dans un fichier texte pour qu'ils puissent m'envoyer les logs.NTVDM CPU a rencontré une instruction illégale

Cela a fonctionné parfaitement sur 3 machines XP (une à l'intérieur de mon réseau, deux à l'extérieur). Une machine Vista (avait un fichier manifeste) mais sur ma machine XP de boss (il est un mec informatique donc sait ce qu'il fait), ça a jeté une erreur très étrange.

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

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

Je l'ai fait googling et il semblait que son NTVDM ait pu être encombré, ou qu'il y ait eu un virus ou quelque chose du genre, rien de tout cela ne semble être le cas, je ne vois pas ce qui se passerait pour que cela échoue de cette manière. using System; en utilisant System.Collections.Generic; en utilisant System.Text; en utilisant System.IO;

espace de noms TestWebService { class Program { 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 suis très coincé pourquoi pourrait/ferait le code ci-dessus cela. C'est en quelque sorte juste que je veux savoir et en partie, cela pourrait-il arriver à une machine de vrais clients, ou juste est-ce que mes patrons sont infectés ou quelque chose comme ça.

Merci

+0

On dirait que le fichier EXE est corrompu. – Chris

Répondre

1

Quelque chose ne tourne pas rond si vous vous retrouvez dans NTVDM, comme cela est la couche d'émulation DOS 16 bits pour XP. Si cela se produit à nouveau après avoir recopié le fichier EXE, j'examinerais le logiciel installé sur le PC de votre patron (version du framework .NET, etc.). J'essaierais également de lancer ceci dans WinDbg pour voir où vous vous retrouvez, obtenir une pile d'appels une fois qu'elle est défectueuse, etc. Je parie que vous trouverez un module étrange sur la pile (spyware, etc).

+0

Je pense qu'il a essayé une copie des copies de l'EXE qui ont eu le même effet, (différentes versions, plus d'enregistrement a été ajouté pour essayer d'obtenir une réponse). Je vais essayer le bit de débogage. Merci – Jon

Questions connexes