Author |
Topic |
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Dec 22 2021 : 4:29:44 PM
|
Hey!
Every once in a while (I'd say about once a week on average), Visual Assist decides to re-parse my entire Unreal solution, which takes quite a long time, and makes it difficult to get work done as the process is very resource intensive. This is a relatively new thing (has only been happening the last couple weeks or so), so I'm suspicious that an update may have caused it to start happening.
Is there an easy way to find out why Visual Assist decided it needed to re-parse everything?
Thanks! |
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Dec 23 2021 : 06:21:08 AM
|
Which version of the IDE are you using? Is it possible installing an IDE update is part of the trigger here?
Are you aware of any crashes, or the IDE not being closed cleanly?
If VA thinks that the IDE has crashed then it will re-parse everything on the next IDE start, since we cannot assume that our symbol database isn't corrupt.
The next thought is loading a second (or more) instance of the IDE. VA maintains a separate instance of its symbol database for each instance of the IDE that is started. This is to avoid two open instances causing problems and accessing symbols from the other instance. But as a result if you have only had a single instance open before, and then open a second instance for the first time, then the new instance won't have an existing symbol database and will need to parse everything.
Apart from this, I am not sure why VA would reparse all of Unreal Engine.
If you look in:
VA Options -> C/C++ Directories
is VA listing all of the directories in your Unreal Engine install as stable include directories? If VA doesn't realise that Unreal Engine is a stable library then this could well have an effect on things.
This partly depends on your settings in:
VA Options -> Unreal Engine |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Jan 04 2022 : 2:54:49 PM
|
I am using Visual Studio Professional 2019 (16.9.4), which I have purposefully not updated for a little while. I was just able to trigger the issue by closing the IDE normally, then running it again.
I do sometimes run with multiple instances of Visual Studio open (for separate solutions), but I don't open the same solution twice at the same time.
I do not see any Unreal directories listed in the "C/C++ Directories" options, just some Windows / MSVC paths. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 04 2022 : 3:16:38 PM
|
OK, if VA does not consider Unreal Engine to be a stable library then this will certainly make it much more likely to get bulk parsing. Fixing this may not fully fix the problem you are seeing, but it is a good first step to try and help.
What directory is Unreal Engine installed into?
There is a known limitation in VA, that it won�t correctly pick up the Unreal Engine directory tree if it installed outside of "C:\Program Files\"
case=105950
to work around this problem can you please create a junction point link to point at the installed engine. So:
Create the directory "C:\Program Files\Epic Games\"
Open a command prompt inside this directory, running as administrator, and run the command:
mklink /J UE_4.26 "C:\UE4\4.26"
Where the second path is the directory where you have installed / placed Unreal Engine. This will create a directory link inside the Windows file system, so while Unreal Engine will appear to exist inside this Program Files sub-directory, is still where it was originally installed.
Now make sure all instances of the IDE are closed, and then go into the directory that holds your game solution. From here you should find in the following files:
Intermediate\ProjectFiles\UE4.vcxproj Intermediate\ProjectFiles\UE4.vcxproj.filters
Open both files in a text editor, and do a search and replace for the old Unreal Engine path to the new Unreal Engine path, so in this case search
"C:\UE4\4.26\"
And turn all instances into:
"C:\Program Files\Epic Games\UE_4.26\"
Save the changes and now reload the IDE and your solution.
To avoid having to do this again, if you run the Unreal Engine editor, or Unreal Engine script files via the junction point path then when they update the Visual Studio solution and project files Unreal Engine will use this junction path, rather than the actual physical path that the engine is installed into. So running:
C:\Program Files\Epic Games\UE_4.26\Engine\Binaries\Win64\UE4Editor.exe
instead of the Unreal Engine editor via its actual path.
|
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Jan 04 2022 : 3:27:49 PM
|
Thanks for the info! We use a customized version of the engine that we sync through Perforce (we don't install it via the launcher), and it doesn't live under "C:\Program Files\".
Is there an ETA for the fix? My custom setup unfortunately makes the junction solution non-viable.
Thanks! |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 05 2022 : 06:00:12 AM
|
This is down as a high priority bug, and we are hoping for a fix fairly soon, but unfortunately no current estimate.
Are you aware of any form of pattern or trigger for when the reparsing happens? For example, is it linked to updating your Unreal Engine in source control, and thus locally? That would justify a fairly broad re-parse, obviously.
Do you have:
VA Options -> Performance -> Parse all files when opening a project
turned On or Off? In very large projects it can help to turn this Off, even though it can mean that VA isn't automatically aware of some edits that come from source control. |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Jan 05 2022 : 3:22:18 PM
|
The reparsing seems to most often happen when I launch a second copy of Visual Studio (though like I mentioned before, on a different solution from the first) - I haven't noticed it happening more often after syncing source changes through Perforce.
It looks like I have "Parse all files when opening a project" enabled. I would assume turning it off would help reduce startup times? Though honestly that isn't too big of a deal for me, since I usually launch Visual Studio in the morning and have it running throughout the day.
Thanks for the additional info! |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 06 2022 : 1:34:32 PM
|
OK, lets just check this. Assuming you have not changed where VA stores it's symbol database, this page explains the default location of the symbol database, which varies somewhat with your version of the IDE:
https://docs.wholetomato.com/default.asp?W332
can you have a look inside the VA install directory, inside the Data sub-directory, how many folders do you have? There should be a "vs16" and a "vs16_1" (assuming VS2019) for the first instance loaded. The "vs16_2" directory is for the second instance loaded. You will probably max out at "vs16_3" or so, but if you have a lot of these then that will do a lot to explain the problem, since each new directory will be a fresh VA symbol database, starting from scratch, which will obviously require a full parse of Unreal Engine. |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Jan 06 2022 : 2:37:59 PM
|
Looks like I have 4 folders - vs16, vs16_1, vs16_2, and vs16_3. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jan 07 2022 : 10:50:53 AM
|
This means VA will have had to reparse your entire Unreal Engine directory at least 4 times since installing VA, once for each instance. If you don't deliberately load 4 instances of the IDE at the same time then some process is ending up running in the background which makes VA think that you are loading an extra instance.
Do you ever see the IDE crash? After a crash VA will automatically reparse everything, since we cannot assume that the symbol database was left in a valid state.
Beyond this, I am not sure what is going on. VA should only reparse everything occasionally, or for a good reason... I don't suppose you have ever seen any hints of a pattern have you? |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Mar 22 2022 : 2:27:52 PM
|
I recently updated to Visual Studio 2022, and wanted to mention that this issue is still happening for me. I checked the Startup.log file, and found that it lists a number of messages like this one: "GetSymDefStrs idx c:\users\aaron\appdata\local\microsoft\visualstudio\17.0_ae7676f0\extensions\a00cdjvx.l30\Data\vs17_2\net\Db14Ds.db is corrupt, fid=0x77a6eda2, sp=0x1, rel=0xb773, act=0x2c4dc3 tid=22604 uiTid=7724:330 3/21/2022 15:10:39 0x584c"
I have not seen Visual Studio 2022 crash, so I'm not sure why the databases get corrupted from time to time. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Mar 23 2022 : 11:38:57 AM
|
If VA feels that the symbol database is corrupt then a symbol database rebuild, and thus a full reparse of Unreal Engine is a reasonable result, but this does suggest we have a different problem here.
When you close the IDE does it tend to close down cleanly? |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Mar 23 2022 : 4:21:00 PM
|
I haven't seen any issues with the IDE when it closes, it shuts down normally. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Mar 24 2022 : 09:49:54 AM
|
Can you please send me any log files you have, maybe they will offer some clues here as to the cause of the corruption. This page explains where to look for the log files:
https://docs.wholetomato.com/default.asp?W305
Please send me the files via email:
[email protected]
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 |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Mar 24 2022 : 1:23:52 PM
|
Email sent! |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Mar 25 2022 : 08:51:28 AM
|
Thank you, I have asked our developers about this. |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Mar 31 2022 : 2:29:00 PM
|
Thank you! Any updates by chance? This is happening to me once every couple of days or so at this point, and a full solution parse takes quite a long time to complete. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Apr 01 2022 : 07:57:46 AM
|
Assuming a modern machine, UE parsing should not take to long, normally. Do you have a sense of how long the parsing is taking? 10 minutes? 1 hour? Several hours?
Solution size obviously matters, but I am assuming that Unreal Engine its self makes up the majority of the code being parsed here. Is that a reasonable assumption? |
zen is the art of being at one with the two'ness |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Apr 01 2022 : 2:26:21 PM
|
I don't know the exact time, but it's a bit over an hour to do a full parse. The vast majority of the code is vanilla Unreal. My machine has an i7-6800k (probably time for an upgrade). |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Apr 04 2022 : 05:57:55 AM
|
What path is Unreal Engine installed to? Is it on a different drive letter?
I have just been looking at a very odd bug where the install location of Unreal Engine can sometimes cause VA's parsing of UE to take a lot longer than normal, so its possible you are running into this. I have a few examples of it happening, but cannot find an "obvious" trigger. If you have a bit of time, I have a fairly simple experiment to see if you are running into this.
oI know you cannot "move" Unreal Engine normally, due to your solution structure, but if you have the time could you create the directory "C:\Program Files\Epic Games\", then, open a command prompt inside this directory, running as administrator, and run the command:
mklink /J UE_4.27 "D:\UE4\4.27"
Where the second path is the directory where you have installed / placed Unreal Engine. This will create a directory link inside the Windows file system, so while Unreal Engine will appear to exist inside this Program Files sub-directory, is still where it was originally installed.
Now ignoring your project, just open the Unreal Engine editor via this junction point, so run:
C:\Program Files\Epic Games\UE_4.27\Engine\Binaries\Win64\UE4Editor.exe
and create a new, default C++ UE project, I used a default puzzle game for my tests. Since the UE editor was run via the junction point, the newly created solution will use the C drive path as the location of Unreal Engine. If you now open the Visual Studio project for this test project, and you get a much faster VA parse then you are seeing the same odd problem I ran into.
An hour does seem rather slow for VA to be parsing Unreal Engine, but its possible its correct. For reference, when I ran into this problem my parse time went from minutes to a couple of hours. |
zen is the art of being at one with the two'ness |
|
|
Tidlidi
New Member
Canada
2 Posts |
Posted - Apr 05 2022 : 5:39:06 PM
|
I am experiencing this same issue in both Visual Studio 2019 & 2022 Pro. Also in a custom Unreal project. VA Reparses very often (maybe every time I open the solution?). Often just closing and reopening the solution without even synching anything will trigger a full reparse. This is what is going on a I type this. Visual Studio crashed and upon restarting it, visual assist is reparsing everything, both my project and unreal engine.
Is there a solution to this ?
Note that I work with 4 different branches of the same project (in 4 different workspaces) and they all behave like this. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Apr 06 2022 : 05:00:32 AM
|
Which version of VA are you using?
The full reparse on crash is by design, since if VA crashes we cannot assume that our symbol database is correct. Are you often seeing crashes, or is this really rare? Would it be possible to get a dump file of a crash, to try and work out if VA is a factor? If so, please send me the files via email:
[email protected]
including this thread ID or URL in the description, so we can match it up.
Which drive and directory do you have Unreal Engine stored in? There is currently a known bug that VA expects Unreal Engine to be installed under the directory "C:\Program Files\", and things don't always work as well if it isn't. There is a work around for this, using windows Junction points, but I don't know if this will be an option for you or not.
Each instance of Visual Studio that you open maintains its own instance of VA's symbol database, which is done to avoid symbols from one instance of the IDE showing up in another instance of the IDE. So this could also be a factor.
If, for example, the first instance of the IDE you load is used to load a different branch, and if VA doesn't realise that Unreal Engine should be treated as a stable include library, and so does not need to be reparsed, then VA may conclude that it needs to parse all of Unreal Engine on solution load.
Assuming Unreal Engine is stored outside of "C:\Program Files\" you might want to try the following settings:
VA Options -> Performance -> Parse all files when opening a project = OFF
VA Options -> Projects and Files -> Upon opening a file, parse all other unparsed files in the same directory: * if Solution is empty = ON * if Solution is not empty = ON
the thinking here is that if VA does not realise Unreal Engine should be treated as a stable include library then turning OFF parse all files will stop VA from trying to parse the entire Unreal Engine library on solution load. VA will still parse all files that you open, along with all of the include files that the file includes. But this won't cover much of Unreal Engine.
Since Unreal Engine is split across a large number of directories, telling VA to parse all files in each directory that it parses any files will get VA to pick up parts of Unreal Engine, one directory at a time, without placing to much stress on your system due to parsing, which will help if you are seeing VA parsing Unreal Engine more slowly than it should. |
zen is the art of being at one with the two'ness |
|
|
Tidlidi
New Member
Canada
2 Posts |
Posted - Apr 06 2022 : 2:41:34 PM
|
I very rarely close visual studio AND visual studio crashes often. I guess this is 95% of my problem. I just did a test and closed my four solutions manually. None reparsed when I opened them. My unreal engine is not in C:\Program Files I am a professional developper synching unreal source from perforce, it is located on the root of another hard drive. (well root\branchName\)
I am well aware that each branch has it's own database. I meant reparse within a specific branch.
VA Options -> Performance -> Parse all files when opening a project = OFF - Already like that
VA Options -> Projects and Files -> Upon opening a file, parse all other unparsed files in the same directory: * if Solution is empty = ON * if Solution is not empty = ON
- My issue isn't with performance so I will leave this off as I need to whole engine parsed since I develop engine stuff as well.
Anyways it sounds like my problem is VS crashing but since this probably represents the experience for most developer with large solutions, maybe having periodic database backup to avoid full reparse on crash would be a worthy investment.
Thanks.
|
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Apr 07 2022 : 05:54:00 AM
|
Are you seeing the regular crashes with VS2022 as well as VS2019, or is it mainly one IDE or the other that is crashing?
I assume you are aware that while VS2019 is a 32bit process, with a 3GB memory limit, VS2022 is a 64bit process, so it doesn't have this memory limit. So nearly all of the crashes are in VS2019 then that raises the possibility that running into the memory limit is a factor. But if you are seeing the crashes in VS2022 as well then this seems to rule out this theory.
Would it be possible to get a mini or full dump from one of these crashes, to try and work out if VA is a factor? If so, please send me the files via email:
[email protected]
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 |
|
|
DF Aaron
Junior Member
USA
11 Posts |
Posted - Oct 12 2022 : 5:23:17 PM
|
quote: Originally posted by feline
What path is Unreal Engine installed to? Is it on a different drive letter?
I have just been looking at a very odd bug where the install location of Unreal Engine can sometimes cause VA's parsing of UE to take a lot longer than normal, so its possible you are running into this. I have a few examples of it happening, but cannot find an "obvious" trigger. If you have a bit of time, I have a fairly simple experiment to see if you are running into this.
oI know you cannot "move" Unreal Engine normally, due to your solution structure, but if you have the time could you create the directory "C:\Program Files\Epic Games\", then, open a command prompt inside this directory, running as administrator, and run the command:
mklink /J UE_4.27 "D:\UE4\4.27"
Where the second path is the directory where you have installed / placed Unreal Engine. This will create a directory link inside the Windows file system, so while Unreal Engine will appear to exist inside this Program Files sub-directory, is still where it was originally installed.
Now ignoring your project, just open the Unreal Engine editor via this junction point, so run:
C:\Program Files\Epic Games\UE_4.27\Engine\Binaries\Win64\UE4Editor.exe
and create a new, default C++ UE project, I used a default puzzle game for my tests. Since the UE editor was run via the junction point, the newly created solution will use the C drive path as the location of Unreal Engine. If you now open the Visual Studio project for this test project, and you get a much faster VA parse then you are seeing the same odd problem I ran into.
An hour does seem rather slow for VA to be parsing Unreal Engine, but its possible its correct. For reference, when I ran into this problem my parse time went from minutes to a couple of hours.
Our projects have a split structure, where the engine lives in one directory and the project lives in another. I can create the junction, but it will not include the project files with our setup (I also have multiple projects, and only one can be linked at a time).
This problem has become debilitating for me, and sometimes causes me to lose half my day to re-parsing. Is there anything I can do to help you diagnose the problem with my setup? |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Nov 14 2022 : 11:30:39 AM
|
Apologies for the very slow reply.
I don't understand the problem with a split structure, isn't this normal? For example, I have Unreal Engine 5 installed to:
F:\ProgFiles\Epic Games\UE_5.0 so the editor lives in:
F:\ProgFiles\Epic Games\UE_5.0\Engine\Binaries\Win64\UnrealEditor.exe
but the projects are stored on C drive, so I have:
C:\Users\Colin\Documents\Unreal Projects\UE5_third_person\UE5_third_person.uproject
the junction point mentioned above is just to make it look like Unreal Engine has been installed onto C drive, into the expected location. The projects can be somewhere else entirely, and normally are.
If you are getting regular crashes then a crash dump would be most appreciated, in case it shows any sign of VA being the cause of the problem. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|