Unicorn with delicious cookie
Nous utilisons des cookies pour améliorer votre expérience de navigation. En savoir plus
Accepter
to the top
>
>
Ctrl+S and Visual Studio Output Window

Ctrl+S and Visual Studio Output Window

12 Aoû 2011
Author:

One of PVS-Studio users forwarded a bug report to us.

Exception message:
The system cannot find the file specified. 
Exception from HRESULT: 0x80070002)
Stack:
EnvDTE.TextPoint get_StartPoint() at (0).
Void BuildEvents_OnBuildDone(EnvDTE.vsBuildScope,
                             EnvDTE.vsBuildAction) 
at C:\Users\evg\Documents\SVN\CCnetBuild\
   Local PVS-Studio Setup\WorkDir\PVS-Studio\
   PVS-Studio\VsPkg.cs(939).

The review of the code revealed that the crash occurs the moment we try to obtain the text from Visual Studio Output Window (it happens just after the build is done and before incremental analysis is launched, so we can be assured that there are no linking errors present). But at the same time the pointer to the output window itself was correctly obtained, the error revealed itself in the fragment which is used to get the pointer for the first character of this text.

In the situation described the error message "The system cannot find the file specified" itself looks quite odd, as neither we, nor the Output Window itself, are in any ways interact or associate with any files, and all the operations with this window a carried out using Visual Studio API from within seemingly safe C# code. And indeed the stack indicates that the exception is generated inside unmanaged Visual Studio interiors. And of course this bug had not repeated itself nor had it been caught by any of our internal tests.

Summing up all of aforesaid, it becomes clear that to replicate this error we have to determine the relationship between Output Window and some external file, if any. After several hours of digging in Visual Studio settings while trying to disable the saving of build logs to html, disable this output window altogether or to find the connection between output text and system temp files (not a thing from this list was able to replicate this bug, on the contrary our code operated flawlessly), by accident one of not so well known Output Window features had been discovered: the ability to save outputted text into the file with Ctrl+S. It should be noted however that this action is in not synchronizing the output with this file, but simply stores the entire output into it without updating it afterwards. Neither the less by exactly this action we were able to replicate the exception of our interest.

Thereby we can clearly see the bug in the Visual Studio API extensibility model — the single saving of the output into a file leads to the inoperability of methods intended for interaction with Output Window. PVS-Studio 3.45 will include a workaround for such situations.

Popular related articles

S'abonner

Comments (0)

close comment form
close form

Remplissez le formulaire ci‑dessous en 2 étapes simples :

Vos coordonnées :

Étape 1
Félicitations ! Voici votre code promo !

Type de licence souhaité :

Étape 2
Team license
Enterprise licence
** En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité
close form
Demandez des tarifs
Nouvelle licence
Renouvellement de licence
--Sélectionnez la devise--
USD
EUR
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
La licence PVS‑Studio gratuit pour les spécialistes Microsoft MVP
close form
Pour obtenir la licence de votre projet open source, s’il vous plait rempliez ce formulaire
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
I want to join the test
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
check circle
Votre message a été envoyé.

Nous vous répondrons à


Si l'e-mail n'apparaît pas dans votre boîte de réception, recherchez-le dans l'un des dossiers suivants:

  • Promotion
  • Notifications
  • Spam