Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Build 1940 unstable?
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Jul 11 2013 :  07:32:31 AM  Show Profile  Reply with Quote
Hi, I am getting many Visual Studio 2008 crashes with VAssistX Build 1940. Three to four each day. Sometimes I get the "Visual Studio has stopped working" box, sometime it just freezes and sometimes (rarely) it simply disappears, usually while I am typing something.

I strongly suspect Visual Assist to be the cause. Every time after a crash it rebuilds its entire database. Also, Visual Studio used to be quite stable when it came out.

The project I am working on is pretty large and VAssist has troubles parsing everything, which doesn't bother me as it still works good enough. But the crashes are getting annoying.

Is there any help I can give you in finding these crashes? Dump Files maybe? Logging?

Best regards

Hajo

P.S. Good thing, VAssist has the auto-recover :) And a fast CPU with an SSD RAID 0 helps also :-D

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Jul 11 2013 :  11:54:36 AM  Show Profile  Reply with Quote
Can you please start by installing VA 1946, running the latest version helps when we get to logs and mini dumps:

http://www.wholetomato.com/downloads/default.asp

Do you have any other add-in's installed? These will be listed in:

IDE tools menu -> Add-in Manager


How many files do you have in your solution?

If you open VA's Open File in Solution dialog (Alt-Shift-O) the title bar contains two numbers. The first number is the number of files currently listed, which changes as you filter the list. The second number is the total number of files in the list, which is normally the number of files in your solution. What is this second number?

When these crashes happen, do you get the option to debug the IDE? You should, from the "Visual Studio has stopped working" box. Can you please debug and save out a mini dump of "devenv.exe". If you can do this, ideally for a couple of crashes, please submit the files via the form:

http://www.wholetomato.com/support/contact.asp

including this thread ID or URL in the description, so we can match it up. Hopefully this will give us some clues.


I am surprised that VA is rebuilding its entire database after every crash. When you say the "entire database", is VA just parsing your solution, or also parsing your stable include directories? The messages on the status bar about what VA is parsing should give you a clue here.

If its just your solution being parsed then this might be due to:

VA Options -> Performance -> Parse all files when opening a project

being turned on.

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 07 2013 :  11:17:39 AM  Show Profile  Reply with Quote
VA 1946, second crash today.

While changing a signature of an implementation from
void something(type1 param1) to void something(type1 param1, type2 param2)

I had just modified the .hpp file and switched to the .cpp file and was about to insert ", type2 param2", when Visual Studio stopped working. Next I saw the "Visual Studio has stopped working... searching for a solution" message box by Windows. I let it search, it came up with nothing. Afterwards Visual Studio restarted automatically, but empty (no project loaded). I did not get a chance to break into the debugger (which is odd, I usually get this) (will try to generate a dump with Task Manager next time). I reopened my project.

VA started rescanning all my source files but not the stable directories. Intellisense also rebuilt. VA is set to "parse all files when opening..." so that might explain it, but when I normally open the project, VA does not scan all files, only those that have changed.

I just verified this: I closed Visual Studio and then opened it again and loaded the solution. The solution opened up immediately and all I see is a quick VA sorting... but no parsing of files. VA parses all files only after a crash (even though parse all files is checked).

Additional Add-Ins are just VAssist and VMWare Debugger (which is not used). But also installed are
* AnkhSVN
* Intel C++ Composer XE 2011, of which only the IPP is licensed. No compilers.

The number of files in my project is 739.

Sorry, not more info at this point. I'll keep you updated.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 08 2013 :  1:00:50 PM  Show Profile  Reply with Quote
Apologies for these problems, obviously this is not supposed to happen. Is today unusual? Are you seeing at least one crash most days?

If you are seeing frequent crashes I am wondering if you would be able to disable your other Add-Ins for a day or two, to see if this makes any difference. Probably not an option if the crashes are more rare though.

If you look in your %TEMP% file you might find a mini dump file from this crash, that Windows automatically generated, and used to submit the crash report, to look for a possible solution. Worth a quick look, if you just date sort the folder content and see if anything obvious pops up.

Your solution is not that big, unless your files are really large or full of very complex macro or template code. I don't see why you should be having crashes. Are you seeing any other odd problems? Signs VA's parser is confused by your code? Functions not listed in the Alt-M list or VA Outline? I am just looking for general clues here.

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 09 2013 :  02:18:40 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline
Your solution is not that big, unless your files are really large or full of very complex macro or template code. I don't see why you should be having crashes. Are you seeing any other odd problems? Signs VA's parser is confused by your code? Functions not listed in the Alt-M list or VA Outline? I am just looking for general clues here.


Many such signs. The project makes use of a lot of templates, boost::signal/functions and other boost specialities, lots of namespaces and some MACRO tables a'la MFC. I'd say, VA's parser misses about 10% to 20% of the actual syntax. Rearranging a source file helps most of the time, although it can be quite hard to figure out, what needs moved around. It usually doesn't bother me, because VA is quite good in picking up the missing bits and pieces from intellisense and from it's symbol history function.

Some of the problematic constructs look like this:
typedef std::vector<mytype> mytypes_t;

and later on
mytypes_t::value_type &(*i);


and VA sometimes has trouble interpreting value_type. Deducting the type of a dereferenced boost::shared_ptr is also often a problem, as in

boost::shared_ptr<mytype> a_ptr;
a_ptr-> ...

VA sometimes treats a_ptr as a variable instead of a pointer, but other times correctly replaces . with -> and lists the members of mytype;

BTW, a collegue of mine, working on the same project, uses an older version of VA (his maintenance expired) and it crashes so much, he is close to deactivating it. Another indicator that this project is difficult on the VA parser.

The crashes I am seeing have gotten less frequent, perhaps three or four a week, probably because I am currently working on a different part of the project.

(btw, sorry, no minidump in the tmp file)

I'll disable the other addins, just to be sure.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 09 2013 :  1:17:22 PM  Show Profile  Reply with Quote
OK, so good news / bad news. Given the problems VA is having, its a good chance that something in your code is confusing our parser so much this causes the crashes. Your college on the older build of VA having to give up on VA lends support to this theory.

Simple uses of boost::shared_ptr should not cause any problems, but you have moved a little bit beyond that.

I have set up the following simple test case here. In a header file I have:

struct felineStructSimpleMembers
{
	int nSimpleOne;
	int nSimpleTwo;
	int nSimpleThree;
};

typedef std::vector<felineStructSimpleMembers> felineVectorStruct_t;



and in the matching cpp file I have:

static void testGeneralCode()
{
	boost::shared_ptr<felineVectorStruct_t> a_ptr;
	// type dot after "a_ptr" and it is correctly converted to ->
	// listbox appears showing std::vector members
	a_ptr;
}



can you try this code in your solution? I have changed the type names so you should not have any conflicts. I am wondering where things start to break down. A confused parser should not crash the IDE, but something is causing your crashes!

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 10 2013 :  01:48:45 AM  Show Profile  Reply with Quote
Added this to one of my files inside a namespace. A . gets automatically replaced with -> and shows the vector member variables.

(1)

a_ptr.   // expands to a_ptr-> and lists vector OK
a_ptr->begin();
works fine, as expected.


(2)

a_ptr->begin(). // does not expand. lists vector::iterator
Does not work as expected. VA does not detect the operator-> operator and treats the return value as a normal data type, not a pointer/iterator. But it does list the iterator members.


(3)

a_ptr->begin()-> // get's confused, does not list anything
Should now list the member variables of felineStructSimpleMembers, but does nothing.


(4)

felineVectorStruct_t::iterator i=a_ptr->begin();
i. // expands to i-> and lists member variables OK
This works as expected.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 13 2013 :  8:14:46 PM  Show Profile  Reply with Quote
Can you please try this code in the global namespace, outside of any namespaces?

Points 1 and 2, I am seeing the same results. There is clearly an issue with dot being converted to -> after "begin()"

case=76155

Point 3 I am seeing a different result, I am seeing the structure members listed correctly and automatically.

Do you have:

VA Options -> Advanced -> Listboxes -> Get content from default Intellisense

turned On or Off? I have this turned Off, testing VS2008 with VA 1949. I would not expect having the code inside a namespace to be a factor here, but it might be, and hopefully this will be a quick and easy test for you. Anything that shows different results between our systems is of interest to me, since we might be seeing the effects of something else in the file or solution confusing VA's parser.

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 14 2013 :  01:43:50 AM  Show Profile  Reply with Quote
#include <vector>
#include <boost/shared_ptr.hpp>


struct felineStructSimpleMembers
{
	int nSimpleOne;
	int nSimpleTwo;
	int nSimpleThree;
};

typedef std::vector<felineStructSimpleMembers> felineVectorStruct_t;}
static void testGeneralCode()
{
	boost::shared_ptr<felineVectorStruct_t> a_ptr;
	// type dot after "a_ptr" and it is correctly converted to ->
	// listbox appears showing std::vector members
	felineVectorStruct_t::iterator i=a_ptr->begin();
	felineStructSimpleMembers ¤t(*i);
	i->  //**1
}

I have moved this code to the top of a .cpp file, even before the first #include (other than vector and shared_ptr). The results remain the same. The i-> //**1 expands . correctly to -> but shows no members of felineStructSimpleMembers. current. expands to current-> and does show the members.

BTW, I'm using boost 1.53. However I did not install boost but included it in our svn instead. The paths to boost are relative to our project files and are set in the appropriate INCLUDE settings of VS2008. Don't know if this could make a difference. This means that VA parses the boost headers from the boost source code layout, i.e. from the boost root directory, and not from the results of a bjam install boost include directory.

Here are the command line options for the .cpp I used to test your code snippet.
quote:

/Od /I "c:\\...\\trunk\\consultants\\iztWidgets\\..\\libs\\ffmpeg\\x64\\include" /I "c:\\...\\trunk\\consultants\\iztWidgets\\..\\libs\\ffmpeg\\SDL-1.2.14-win64-dev\\include" /I "..\\..\\libs\\litwindow" /I "..\\..\\libs\\wxWidgets\\include\\msvc" /I "..\\..\\libs\\wxWidgets\\include" /I "..\\..\\libs\\boost" /I "..\\..\\iztsdk" /I "..\\..\\iztrcv" /I "..\\..\\libs\\iztcpp" /I "c:\\...\\trunk\\consultants\\iztWidgets\\\\" /I "c:\\...\\trunk\\consultants\\iztWidgets\\..\\iztsdk_c" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "IZTWIDGETS_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "WXUSINGDLL" /D "LITWINDOW_ALL_DYN_LINK" /D "BOOST_ALL_DYN_LINK" /D "IZT_ALL_DYN_LINK" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /FD /EHsc /RTC1 /MDd /Yu"stdafx.h" /W3 /nologo /c /Zi /TP /wd4503 /errorReport:prompt /Zm210 /MP

Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 14 2013 :  01:46:50 AM  Show Profile  Reply with Quote
[quote]Originally posted by hajokirchhoff


typedef std::vector<felineStructSimpleMembers> felineVectorStruct_t;} //TYPO
}

I corrected this typo, removed the superfluous bracket. Results are the same.

Oh, and (*(a_ptr->begin()). shows the members of the vector, not of the simpleStruct.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 14 2013 :  7:12:25 PM  Show Profile  Reply with Quote
Using VS2008 I have made a new default C++ console project, and added the test code to it. Can you please download this project from here:

http://forum.wholetomato.com/colin/forumimages/topic11452_feline_vector_ptr_test.zip

if you unzip the solution and open the file "feline_vector_ptr_test.cpp" you will see the test code. I have tested this with Boost 1.53.0, where boost has been added to the IDE global C++ include directories list, so it shows up as VA stable include directory.

But it will be easy enough to simply add your boost location as a single additional include directory. Once you have done this, do you still see the problem, or do you get the struct members listed correctly, as I do?

I am testing with:

VA Options -> Advanced -> Listboxes -> Get content from default Intellisense

turn On.

It looks like you are including some other libraries, so its possible this test will produce a different result. Certainly it should if one of those other libraries is somehow a factor.

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 15 2013 :  05:26:03 AM  Show Profile  Reply with Quote
I added my boost directory to the include settings of the C++ sections.
Close project and reopened it.
VA found boost and parsed it.
a_ptr->begin(). does not convert . to -> as expected (but you assigned a ticket already).

a_ptr->begin()-> lists members of felineStructSimpleMembers as expected. That's different from what I am seeing.

BTW, our project really confuses the default VS Intellisense. So if the members are pulled in from VS Intellisense that could explain, why I am not seeing any.

However I did the following test with your testproject:
I choose VAssist Rebuild Symbol Databases.
I deactivated the "Get Default from Intellisense" (it is normally activated).
I closed Visual Studio.
Deleted the *.ncb Intellisense file.
I opened the project.
Intellisense rebuild the *.ncb file and VA parsed the file.
"Get Default from.." is now off.

But a_ptr->begin()-> still shows the members correctly, so VA is able to parse them in this situation.

What could I try next?
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 15 2013 :  2:48:54 PM  Show Profile  Reply with Quote
Very interesting, thank you for this information. In the test solution I sent you, if you show VA View, then place keyboard focus back into the editor, and now hover the mouse over "iterator" on line 22, what do you see in the bottom half of VA View?

For me the top level node is "std.vector<felineStructSimpleMembers>.iterator"

I suspect you will see the same thing. If so, can you please try the same test in your main solution?

If you compare the bottom half of VA View, the content of VA's context and definition fields, and what Alt-g does for the vector iterator and boost::shared_ptr are you seeing any obvious differences? Hopefully by opening both solutions at once, side by side in separate instances of VS2008 a difference will show up in just a couple of minutes.

My current theory is that one of your other libraries has a definition of iterator, vector, vector::iterator or even shared_ptr that is being used instead of the boost and STL versions. If so, it should show up in the context and definition fields, or VA View as a clearly different type, or alt-g will take you to a different header file.

If so, I can just download this library and try to reproduce this problem here.

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 16 2013 :  10:19:41 AM  Show Profile  Reply with Quote
In your sample I see exactly what you describe.

Hovering over the iterator in the sample I see the std.vector<... in the VAView. And in the tooltip that opens next to the mouse pointer, I see two definitions.
typedef _Vector_iterator<felineStructSimpleMember, _Alloc> iterator
typedef std::VAiterator<felineStructSimpleMembers> iterator

But when I copy&paste the example into one of my own .cpp files, I see a difference: the order is reversed. The std::VAiterator is shown first and the _Vector_iterator i shown second.
And the VAView still shows std.vector as the root node, but it shows the std.VAiterator<_Ty> as its first child, whereas in your original sample, the std.VAiterator<_Ty> is shown as the last child of the root.

Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 16 2013 :  10:22:45 AM  Show Profile  Reply with Quote
This is the tooltip in your example.



The order is reversed when I copy the code it into my own code.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 16 2013 :  1:12:03 PM  Show Profile  Reply with Quote
I was hoping for something a bit more dramatic and obvious, something that screamed "this is the problem library". Thank you for trying this, it looks like the next sensible step is for me to try and reproduce the problem here using all of your libraries.

From your command line, it looks like your library list is:

iztWidgets, litwindow, iztsdk, iztrcv, iztcpp - not finding any of these on a quick search, are these internal or 3rd party libraries?

wxWidgets - do you know which version you are using?
boost - I already have the correct version of Boost

zen is the art of being at one with the two'ness
Go to Top of Page

hajokirchhoff
Ketchup Master

Germany
58 Posts

Posted - Aug 16 2013 :  2:05:29 PM  Show Profile  Reply with Quote
quote:
Originally posted by feline
iztWidgets, iztsdk, iztrcv, iztcpp

are internal, privat libraries. They contain pretty standard C++ code and only a few templates. They do contain several namespaces and using statements.
quote:
litwindow
is open source, you can find it on sourceforge or I can send you a copy. We're using branch 0.91. This is my own library and it uses a lot of templates and macros.

wxWidgets - we are using a version close to 2.9.5, taken from svn.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Aug 19 2013 :  12:24:50 PM  Show Profile  Reply with Quote
Do you have a download link for litwindow? Doing a search on sourceforge I am finding this, but it is on version 0.3.1 and only lists 10 downloads, so I am not sure this is the right library:

http://sourceforge.net/projects/litwindow/?source=directory

Alternatively, if it is easy, you can just send me a zip of the library files via the form:

http://www.wholetomato.com/support/contact.asp

including this thread ID or URL in the description, so we can match it up.

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000