2008-12-07 42 views
0

我遇到了一個很奇怪的錯誤,我不明白。我創建了一個C#控制檯應用程序,該應用程序僅用於測試我的Web服務是否可以從我的網絡外部工作。它所做的只是嘗試連接到web服務,將每個階段輸出到控制檯並將其寫入文本文件,以便他們可以將日誌發送給我。NTVDM CPU遇到非法指令

它在3臺XP機器(一個在我的網絡內,2個在外面)完美工作。一臺Vista機器(有一個清單文件),但在我的老闆XP機器上(他是一個IT人員,所以知道他在做什麼),它拋出了一個非常奇怪的錯誤。

C:\ TEMP \ testwe〜1.EXE 的NTVDM CPU遇到非法指令

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

我做了一些谷歌搜索看起來他的NTVDM似乎有可能被篡改,或者有病毒或其他東西,這些都不是這種情況,我看不到會發生什麼情況,導致這種失敗。 using System; using System.Collections.Generic; using System.Text; using System.IO;

命名空間testwebservice { 類節目 { 的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); 
     } 
    } 
} 

}

我很卡爲什麼上面的代碼可以/會做到這一點。這只是我想知道的一部分,這可能發生在一個真正的客戶端機器上,或者只是我的老闆機器感染了什麼。

謝謝

+0

看起來像EXE文件已損壞。 – Chris 2008-12-08 04:58:42

回答

1

東西是非常錯誤的,如果你在NTVDM結束了,因爲這是XP的16位DOS仿真層。如果在重新複製EXE後再次發生這種情況,我會調查安裝在老闆PC上的軟件(.NET框架版本等)。

我也試着在WinDbg中運行這個命令,看看你最終得到了什麼,當它出現故障時得到一個調用棧等,我打賭你會在堆棧中找到一個奇怪的模塊(間諜軟件等)。

+0

我認爲他已經嘗試了一個具有相同效果的EXE副本(不同的版本,更多的日誌記錄被添加到試圖獲得答案)。我會給調試位一個去。謝謝 – Jon 2008-12-08 10:30:40