Announcement

Collapse
No announcement yet.

LoaderLock was detected

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LoaderLock was detected

    Hallo zusammen,

    ich habe ein Problem, das ich nicht so ganz verstehe.

    Ich habe eine Windows-Forms Anwendung, wenn ich jetzt über einen Button ein zweites Form öffne und dort, z.B. in einem Textfeld eine Eingave mache bekomme ich folgende Meldung:

    LoaderLock was detected

    Eine verwaltete Ausführung wird innerhalb der Sperre für den OS-Loader versucht. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.

    Ich habe keine Ahnung wo das Problem liegt.

    Kann mich vielleicht jemand erhellen ?

    Der Aufruf des zweiten Forms ist völlig normal.

    Code:
    CallDirectFrm frm = new CallDirectFrm();
    frm.Show();
    VG
    Jörg

  • #2
    Hallo,

    die Fehlermeldung kommt von der LdrpLoaderLock-Critical Section aus NTDLL, die während der DLL-Initialisierung einen Deadlock verhindern soll. Dieser Teil ist extrem vorsichtig, so dass durchaus "Fehlalarme" vorkommen können.

    Es kann mehrere mögliche Gründe geben:

    a) Das Service Pack 1 für Visual Studio 2005 wurde noch nicht installiert.

    b) Es wird über P/Invoke eine Win32-DLL eingebunden, die "gefährliche" Sachen während der Initialisierung macht.

    c) Es wird über COM Interop ein ActiveX/OCX-Control eingebunden.

    c) Es wird das DirectX 9 SDK in eine .NET 2.0-Anwendung eingebunden.


    Das Problem wird in http://msdn.microsoft.com/library/de...ingProblem.asp näher beschrieben, ergänzend dazu liefert der Blog-Eintrag http://blogs.msdn.com/cbrumme/archiv.../20/51504.aspx weitere Details.

    Comment


    • #3
      Hallo Andreas,

      danke für die Antwort.

      Lieder trifft keines deiner 4 aufgelisteten Punkte auf mein Programm zu.
      Deshalb bin ich ja ein wenig verwirrt.
      Wenn ich das Programm nicht im Debugger laufen lasse, sondern ganz normal die exe starte ist alles ok und es gibt auch keine Probleme.

      Werde mir auf jedenfall mal deine beiden Quellen anschauen und sehen, ob ich noch zusätzlich Infos bekomme.

      Gruß
      Jörg

      Comment


      • #4
        Zusatzinfos:

        Das Problem besteht nur, wenn ich die Anwendung direkt aus dem Debugger starte. Wenn ich die exe starte und mich dann mit dem Debugger an den Prozess anhänge funktioniert das debugging einwandfrei.

        Ein Problem von VSS 2005 ??

        Gruß
        Jörg

        Comment


        • #5
          Hallo,

          Dieser Teil ist extrem vorsichtig, so dass durchaus "Fehlalarme" vorkommen können.
          der Debugger von Visual Studio 2005 reicht nur das weiter, was er von Win32 (NTDLL) erhalten hat. Wenn ein Prozess unter der Kontrolle eines Debuggers läuft, kann dieser von Win32 die erweiterte Benachrichtigung anfordern. Win32 liefert dann alle Warnungen zurück, die eine DLL-Implementierung auslöst. Und bei der LdrpLoaderLock-Critical Section aus NTDLL sind Fehlalarme bereits "aktenkundig" geworden.

          Comment


          • #6
            Hallo Jörg,


            wie Andreas bereits sagte, liegt die Ursache Deiner Fehlermeldung wohl in einer eingebundenen Dll, auf die Du erst einmal keinen Einfluß hast.

            Damit Du dennoch Deinen Programmcode unter Visual Studio 2005 debuggen kannst, gibt es die Möglichkeit, das Anhalten des Debuggers bei dem Ereignis "LoaderLock" zu deaktivieren. Gehe dazu unter Visual Studio 2005 in den Dialog "Debuggen / Ausnahmen". Öffne den Punkt "Managed Debugging Assistants" und entferne das Häkchen "LoaderLock" in der Spalte "Ausgelöst".

            Danach sollte sich das Programm anstandslos debuggen lassen.


            Mit freundlichen Grüßen,


            rednax

            Comment


            • #7
              Hallo Rednax,

              danke für den Tipp, werde ich sofort ausprobieren.

              Ich gebe dir und Andreas ja Recht, dass das Problem vielleicht in einer eingebundenen DLL oder so liegt. Komisch ist nur, dass das Projekt ein paar Tage vorher noch problemlos funktioniert hat und plötzlich tritt dieser Fehler auf. Das Projekt hat auch nur managed DLL's. Entweder die Framework DLL's oder eigene DLL's.

              Mir ist also nicht ganz klar warum der Fehler plötzlich auftirr, auch wenn es sich wahrscheinlich um einen "Fehlalarm" handelt, wie Andreas geschrieben hat.

              Meiner Meinung nach müßte es dann ein Fehler in VSS2005 sein.

              Gruß
              Jörg

              Comment

              Working...
              X