2016-06-29 91 views
2

Das Problem:VS2015 mit Absturz „Eine neue Schutzseite ...“ bei der Bearbeitung nur Quellcode

Visual Studio 2015 hält mit diesem Fehler abstürzt:

Eine neue Schutzseite für den Stapel kann nicht

Hintergrund erstellt werden:

Es gibt bereits einige Fragen in Bezug auf t draußen sein Fehler in anderen Kontexten, aber alle scheinen mit der Interoperation mit Legacy-COM-Code oder Designer-Tools in Visual Studio in Zusammenhang zu stehen. Ich versuche gerade, eine C# -Quelldatei zu bearbeiten.

Windows service/A new guard page for the stack cannot be created

A new guard page for the stack cannot be created

Bisher habe ich nur diesen Fehler zu sehen, wenn Verträge XML Dokumentations ccdocgen.exe den Code zu zeigen. Als ich VS2013 mit ccdocgen verwendete, kam der Fehler gelegentlich beim Aufbauen, aber es würde nur ccdocgen, nicht VS abstürzen. Nach dem Upgrade auf VS2015 habe ich es sehr häufig gesehen, wenn ich mit ccdocgen etwas erstellt habe, das anonyme Methoden verwendet, aber bis jetzt stürzte es nur ccdocgen und nicht VS ab. Es ist auch erwähnenswert, dass der Fehlerdialog etwas anders aussieht, wenn der Fehler auf Build von ccdocgen geworfen wird.

Kontext:

Die Lösung, die ich gerade arbeite verwendet Code Verträge über Voraussetzungen und post-Bedingungen, aber nicht nutzt die statische Kontrolleur überhaupt. Ich erhalte diesen Fehler beim Bearbeiten von Code, indem ich einfache Dinge wie Tippen, Textauswahl, Ctrl+C oder Ctrl+X bearbeite. Seitdem ich angefangen habe, habe ich alle Code Contracts-Tools in dem Projekt deaktiviert, an dem ich gerade arbeite (aber nicht in der gesamten Lösung), aber der Fehler tritt immer noch sporadisch auf.

Basierend auf Antworten auf andere Fragen zu dieser Fehlermeldung, wird es durch einen Stapelüberlauf irgendwo verursacht. Da dieser Fehler nur beim Editieren von Text auftritt und ich erst seit dem Wechsel zu VS2015 darauf gestoßen bin, gehe ich davon aus, dass Roslyn etwas mit Hintergrundparsing zu tun hat.

Einige Code: Edit: Ich habe den Fehler mit beiden Versionen dieser Eigenschaft Kommentar gesetzt, so dass nicht fertig.

Dies ist das Element, das ich glaube, das Problem verursacht:

public DataView JoinedRecords => 
    (from r1 in Table1.AsEnumerable() 
    join r2 in Table2.AsEnumerable() 
      on r1.Field<int>("ID") equals r2.Field<int>("ID") 
    where r2.Field<bool>("IsPending") 
    select r1) 
    .CopyToDataTable().AsDataView(); 

Wenn ich die Abfragesyntax fallen, wirft es Fehler weniger häufig:

public DataView JoinedRecords => 
    query = Table1.AsEnumerable() 
     .Join(Table2.AsEnumerable(), 
      r1 => r1.Field<int>("ID"), 
      r2 => r2.Field<int>("ID"), 
      (r1, r2) => r1) 
     .CopyToDataTable().AsDataView(); 

Fragen:

  • Hat jemand anderes dieses Problem?
  • Habe ich recht zu glauben, dass dies eine Roslyn-Frage ist?
  • Wie kann ich mehr Daten über den Absturz bekommen? Gibt es ein praktisches VS-Fehlerprotokoll, das ich finden kann?
  • Fehle ich etwas?

Edit: Zusätzliche troubleshoot Schritte

Wie dieser Beitrag vorgeschlagen (Visual Studio 2015 Not Working), ich den Crash Recorder verwendet, um das Problem an Microsoft zu senden.

Ich lief auch VS mit dem /log Argument und 2 Fehler im Protokoll gefunden, aber sie klingen nicht sehr relevant.

<entry> 
    <record>563</record> 
    <time>2016/06/29 16:00:08.841</time> 
    <type>Error</type> 
    <source>Extension Manager</source> 
    <description>Extension will not be loaded because an extension with the same ID &apos;Microsoft.Windows.DevelopmentKit.Desktop&apos; is already loaded at C:\PROGRAM FILES (X86)\COMMON FILES\MICROSOFT\EXTENSIONMANAGER\EXTENSIONS\MICROSOFT\WINDOWS KITS\8.0\DESKTOP SDK\...</description> 
    <path>C:\PROGRAM FILES (X86)\COMMON FILES\MICROSOFT\EXTENSIONMANAGER\EXTENSIONS\MICROSOFT\WINDOWS KITS\8.1\DESKTOP SDK\</path> 
    </entry> 
    <entry> 
    <record>564</record> 
    <time>2016/06/29 16:00:09.587</time> 
    <type>Error</type> 
    <source>Color Theme Service</source> 
    <description>The color &apos;Popup&apos; in category &apos;de7b1121-99a4-4708-aedf-15f40c9b332f&apos; does not exist.  </description> 
    </entry> 

Edit 2: Weitere Details

Fehlerdialog: enter image description here

Ich habe auch bemerkt, wenn der Fehlerdialog erscheint, aber bevor ich auf 'OK', viele der Visual Studio-Prozesse sehen im Task-Manager noch normal aus. devenv, PerfWatson, VsHub und Microsoft.VsHub.Server.HttpHost laufen immer noch und haben schwankende Werte für Working Set, Handles und Threads. VBCSCompiler und MSBuild laufen noch, aber ohne Schwankungen (was normalerweise der Fall ist, wenn kein Build ausgeführt wird).

Edit:

Problem trat sowohl VS2015 Update 1 und nach dem 3.

Problem wurde mit Code Verträge v1.9 zu aktualisieren aktualisieren, versucht zu deinstallieren und neu installieren von CC 1,9 bis Kein Effekt.

Mögliche Fehler?

Installierte CC v1.10-RC2 und ich habe seit ein paar Minuten ohne VS-Absturz gearbeitet.

Will Follow-up posten, wenn entweder:

  • Mehr Abstürze passieren, oder vorzugsweise
  • ich durch einen ganzen Tag der Arbeit ohne Abstürze
+0

Ich bin einer der Betreuer von Code Contracts, aber ich kann nicht sehen, wie die Änderung von v1.9 zu v1.10 so schwerwiegende Auswirkungen haben könnte. Ich freue mich auf weitere Informationen ... –

+0

Hallo Sergey. Ich bekomme immer noch eine Menge Code-Contracts abstürzen, aber Visual Studio wird nicht heruntergefahren. Diese sind mir seit dem Upgrade auf VS2015 sehr oft passiert. Ich gebe immer den Fehlerbericht ein, wenn ich dazu aufgefordert werde (was nur passiert ist, wenn VS nicht abstürzt). Können Sie Fehlerprotokollverlauf für mich ziehen? – JamesFaix

Antwort

3

Am I right in believing this is a Roslyn issue?

Ich denke, dass es unwahrscheinlich Roslyn ist die direkte Ursache für dieses Problem. Vor allem wegen dieser Datenmenge.

When I was using VS2013 with ccdocgen, the error came up occasionally when building, but it would only crash ccdocgen, not VS

Roslyn wurde bis VS2015 nicht geliefert. Davor war der Compiler ein komplett anderer Code (nativ vs. verwaltet). Obwohl es möglich ist, dass beide Compiler den gleichen Fehler haben, ist es für diesen speziellen Problemtyp unwahrscheinlich.

Ich denke, es ist eher ein Problem mit Code Contracts.Insbesondere Roslyn und der native Compiler erzeugen dieselbe Sequenz von IL, die ein Problem mit Code-Kontrakten verursacht.

Ich werde das Code Contracts Team darüber informieren und sehen, was ihre Analyse ist.

+0

Danke. Ich habe regelmäßig Benachrichtigungen zu ccdocgen-Fehlern an sie gesendet, wenn sie dazu aufgefordert werden. Hoffentlich gibt es dort einige nützliche Protokolldaten. – JamesFaix