Komischer Fehler

port29

deus.Server
Hallo Leute,

bei einem selbstentwickelten Programm bekomme ich in letzter Zeit vermehrt diese Fehlermeldung. Kann mir von euch sagen, was das ist?

Code:
Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
   bei System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromScan0(Int32 width, Int32 height, Int32 stride, Int32 format, HandleRef scan0, IntPtr& bitmap)
   bei System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
   bei System.Drawing.Bitmap..ctor(Image original, Int32 width, Int32 height)
   bei System.Drawing.Bitmap..ctor(Image original)
   bei Export.Form1.checkColor()
   bei Export.Form1.timer1_Tick(Object sender, EventArgs e)
   bei System.Windows.Forms.Timer.OnTick(EventArgs e)
   bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
Export
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Dokumente%20und%20Einstellungen/dr/Desktop/Export.exe.
----------------------------------------
System.Windows.Forms
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System.Configuration
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
System.Xml
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
mscorlib.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
System.Windows.Forms.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.1433 (REDBITS.050727-1400).
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.
 
Greifts du ev. auf ein COM Objekt oder irgendwie anders auf unmanaged/unsafe Code zu?

Ja, das mache ich. Das Programm ist ein kleiner Bot, der eine Telefonanlage steuert, er spielt sozusagen einen manuellen Load Balancer. Und zwar funktioniert das ganze folgendermaßen:

Ich habe einen Quad Core Server mit Linux als Basis und 8GB Ram, darauf läuft nun VMware und zwar habe ich unter VMWare eine Windows XP Installation angefertigt und dann darauf die Management Software installiert. Anschließend wurden die Maschinen geklont, sodass ich 4 exakte Kopien (alle mit 1024MB Ram) bekommen habe (eine Rufnummer verwaltet ein XP Rechner).

Mein Programm ist wiegesagt ein Bot. Er macht die ganze Zeit "screenshots" und sucht die ganze Zeit nach bestimmten Farbmustern die einen eingehenden Anruf signalisieren. Dann wird mithilfe von Sendkeys zur entsprechenden Weiterleitungsstelle in der GUI durchgehagelt und der Anruf weitergeleitet.

Die manchmal läuft die Software Tage ohne Probleme, manchmal taucht auch 3-4 Stunden dieser Fehler auf. Wobei der Timer, von dem der Fehler eigentlich ausging, jede Sekunde aufgerufen wird. Und genau das ist das, was ich nicht verstehen kann. Also eigentlich rechne ich da schon mit etwas determinismus
 
Ich weiß ja nicht, was der Bot macht, aber die Exception sieht nach einem guten alten Segmentation Fault aus. Sprich, dein Bot scheint auf Speicherbereiche zuzugreifen, auf den er nicht die entsprechenden Rechte hat.
Zum Beipspiel kann es sein, dass er nicht reservierten Speicher verwendet, ein Arrayindex zu weit geht o.ä.
Gruß, Mel_One
 
Hm, okay, das klingt irgendwie nach Race Conditions. Sind da irgendwie mehrere Threads beteiligt, die evt. eine gemeinsame Variable löschen können oder sowas? Solche Fehler nicht nämlich nicht wirklich deterministisch, die können bei extrem vielen Durchläufen gar nicht auftreten, aber dann plötzlich erscheinen.
 
Zurück