Our website uses cookies to enhance your browsing experience.
Accept
to the top
close form

Fill out the form in 2 simple steps below:

Your contact information:

Step 1
Congratulations! This is your promo code!

Desired license type:

Step 2
Team license
Enterprise license
** By clicking this button you agree to our Privacy Policy statement
close form
Request our prices
New License
License Renewal
--Select currency--
USD
EUR
* By clicking this button you agree to our Privacy Policy statement

close form
Free PVS‑Studio license for Microsoft MVP specialists
* By clicking this button you agree to our Privacy Policy statement

close form
To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

close form
I am interested to try it on the platforms:
* By clicking this button you agree to our Privacy Policy statement

close form
check circle
Message submitted.

Your message has been sent. We will email you at


If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

>
>
Ctrl+S and Visual Studio Output Window

Ctrl+S and Visual Studio Output Window

Aug 12 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


Comments (0)

Next comments next comments
close comment form