Project-system: VS sometimes hangs for tens of seconds after a complete build.

Created on 18 May 2017  路  15Comments  路  Source: dotnet/project-system

I'm fairly certain i've even gone away for 1+ minutes and it's still hung.

Bug Legacy Tenet-Performance

Most helpful comment

It has always done a design-time build on the UI thread, and probably will always do a design-time build on the UI thread

Why is a design time build being done? I just did a normal build. Why is this design time build happening right when the normal build completes?

is this new behavior or existing behavior that you've just got around to reporting?

I've seen this now and hten, but recently the experience in VS has gotten so excruciating that i'm just trying to collect and report every crash and hang i run into.

It's seriously bad now. To the point that i can go use the bathroom (on a different floor), as well as make myself tea, and still come back and be waiting on vsloading/builds/hangs/etc. :(

It feels like overall VS has absolutely nose-dived on perf between RTM and now.

All 15 comments

Example of call stack i'm seeing:

>   System.RuntimeMethodHandle.GetDeclaringType(method) Unknown
    System.Delegate.GetMethodImpl() Unknown
    System.MulticastDelegate.GetMethodImpl()    Unknown
    System.Threading.Tasks.Task.ScheduleAndStart(needsProtection)   Unknown
    System.Threading.Tasks.Task<uint>.StartNew(parent, function, cancellationToken, creationOptions, internalOptions, scheduler, stackMark) Unknown
    System.Threading.Tasks.Task.Run<uint>(function, cancellationToken)  Unknown
    Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.FileChangeTracker.StartFileChangeListeningAsync()  Unknown
    Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.VisualStudioAnalyzer.VisualStudioAnalyzer(fullPath, fileChangeService, hostDiagnosticUpdateSource, projectId, workspace, loader, language) Unknown
    Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem.AbstractProject.AddAnalyzerReference(analyzerAssemblyFullPath) Unknown
    [Native to Managed Transition]  
    [Managed to Native Transition]  
    Microsoft.CodeAnalysis.BuildTasks.Vbc.InitializeHostCompiler(vbcHostObject) Unknown
    Microsoft.CodeAnalysis.BuildTasks.Vbc.InitializeHostObject()    Unknown
    Microsoft.Build.Utilities.ToolTask.Execute()    Unknown
    Microsoft.CodeAnalysis.BuildTasks.Vbc.Execute() Unknown
    Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(taskExecutionHost, taskLoggingContext, taskHost, bucket, howToExecuteTask)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(taskExecutionHost, taskLoggingContext, taskHost, bucket, howToExecuteTask)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(taskLoggingContext, bucket, taskIdentityParameters, taskHost, howToExecuteTask)    Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<InitializeAndExecuteTask>d__24>(stateMachine) Unknown
    Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(taskLoggingContext, bucket, taskIdentityParameters, taskHost, howToExecuteTask)    Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteBucket>d__19>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__18>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__13>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetEntry.<ProcessBucket>d__48>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetEntry.<ExecuteTarget>d__42>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetBuilder.<ProcessTargetStack>d__22>(stateMachine) Unknown
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetBuilder.<BuildTargets>d__11>(stateMachine)   Unknown
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildProject>d__57>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildAndReport>d__49>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<RequestThreadProc>d__48>(stateMachine) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.WaitWithBuilderThreadStart(handles, recursive, threadingData, submissionId)  Unknown
    Microsoft.Build.Execution.BuildSubmission.Execute() Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetsImpl(targetNamesToBuild, targetOutputs, retainCachedProjectInstance, isRealBuild, isOutOfProcBuild, callback)    Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlagsAndOutputs(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild) Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlags(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild)   Unknown

Another callstack:

>   Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.Function<Microsoft.Build.Execution.ProjectPropertyInstance>.Execute(objectInstance, properties, options, elementLocation) Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertyBody(propertyBody, propertyValue, properties, options, elementLocation, usedUninitializedProperties)    Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.Function<Microsoft.Build.Execution.ProjectPropertyInstance>.Execute(objectInstance, properties, options, elementLocation) Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertyBody(propertyBody, propertyValue, properties, options, elementLocation, usedUninitializedProperties)    Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertiesLeaveTypedAndEscaped(expression, properties, options, elementLocation, usedUninitializedProperties)   Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.Function<Microsoft.Build.Execution.ProjectPropertyInstance>.Execute(objectInstance, properties, options, elementLocation) Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertyBody(propertyBody, propertyValue, properties, options, elementLocation, usedUninitializedProperties)    Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertiesLeaveTypedAndEscaped(expression, properties, options, elementLocation, usedUninitializedProperties)   Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.PropertyExpander<Microsoft.Build.Execution.ProjectPropertyInstance>.ExpandPropertiesLeaveEscaped(expression, properties, options, elementLocation, usedUninitializedProperties)   Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.ExpandIntoStringLeaveEscaped(expression, options, elementLocation)    Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.EvaluatePropertyElement(propertyElement) Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.EvaluatePropertyGroupElement(propertyGroupElement)   Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.PerformDepthFirstPass(currentProjectOrImport)    Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.EvaluateImportElement(directoryOfImportingFile, importElement)   Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.PerformDepthFirstPass(currentProjectOrImport)    Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.EvaluateImportElement(directoryOfImportingFile, importElement)   Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.PerformDepthFirstPass(currentProjectOrImport)    Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.EvaluateImportElement(directoryOfImportingFile, importElement)   Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.PerformDepthFirstPass(currentProjectOrImport)    Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.Evaluate()   Unknown
    Microsoft.Build.Evaluation.Evaluator<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance, Microsoft.Build.Execution.ProjectMetadataInstance, Microsoft.Build.Execution.ProjectItemDefinitionInstance>.Evaluate(data, root, loadSettings, maxNodeCount, environmentProperties, loggingService, itemFactory, toolsetProvider, projectRootElementCache, buildEventContext, projectInstanceIfAnyForDebuggerOnly, sdkResolution)    Unknown
    Microsoft.Build.Execution.ProjectInstance.Initialize(xml, globalProperties, explicitToolsVersion, explicitSubToolsetVersion, visualStudioVersionFromSolution, buildParameters, loggingService, buildEventContext, sdkResolution)    Unknown
    Microsoft.Build.Execution.ProjectInstance.ProjectInstance(projectFile, globalProperties, toolsVersion, buildParameters, loggingService, buildEventContext)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.LoadProjectIntoConfiguration()   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildProject>d__57>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildAndReport>d__49>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<RequestThreadProc>d__48>(stateMachine) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.WaitWithBuilderThreadStart(handles, recursive, threadingData, submissionId)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.StartNewBuildRequests(requests)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<StartNewBuildRequests>d__51>(stateMachine) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.StartNewBuildRequests(requests)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProjects(projectFiles, properties, toolsVersions, targets, waitForResults)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildProjects>d__33>(stateMachine) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProjects(projectFiles, properties, toolsVersions, targets, waitForResults)  Unknown
    Microsoft.Build.BackEnd.TaskHost.BuildProjectFilesInParallelAsync(projectFileNames, targetNames, globalProperties, undefineProperties, toolsVersion, returnTargetOutputs)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Microsoft.Build.Framework.BuildEngineResult>.Start<Microsoft.Build.BackEnd.TaskHost.<BuildProjectFilesInParallelAsync>d__53>(stateMachine)   Unknown
    Microsoft.Build.BackEnd.TaskHost.BuildProjectFilesInParallelAsync(projectFileNames, targetNames, globalProperties, undefineProperties, toolsVersion, returnTargetOutputs)   Unknown
    Microsoft.Build.BackEnd.TaskHost.InternalBuildProjects(projectFileNames, targetNames, globalProperties, undefineProperties, toolsVersion, returnTargetOutputs)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Microsoft.Build.Framework.BuildEngineResult>.Start<Microsoft.Build.BackEnd.TaskHost.<InternalBuildProjects>d__49>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskHost.InternalBuildProjects(projectFileNames, targetNames, globalProperties, undefineProperties, toolsVersion, returnTargetOutputs)  Unknown
    Microsoft.Build.BackEnd.MSBuild.ExecuteTargets(projects, propertiesTable, undefineProperties, targetLists, stopOnFirstFailure, rebaseOutputs, buildEngine, log, targetOutputs, useResultsCache, unloadProjectsOnCompletion, toolsVersion)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<Microsoft.Build.BackEnd.MSBuild.<ExecuteTargets>d__77>(stateMachine) Unknown
    Microsoft.Build.BackEnd.MSBuild.ExecuteTargets(projects, propertiesTable, undefineProperties, targetLists, stopOnFirstFailure, rebaseOutputs, buildEngine, log, targetOutputs, useResultsCache, unloadProjectsOnCompletion, toolsVersion)   Unknown
    Microsoft.Build.BackEnd.MSBuild.BuildProjectsInParallel(propertiesTable, undefinePropertiesArray, targetLists, success, skipProjects)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<Microsoft.Build.BackEnd.MSBuild.<BuildProjectsInParallel>d__74>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.MSBuild.BuildProjectsInParallel(propertiesTable, undefinePropertiesArray, targetLists, success, skipProjects)   Unknown
    Microsoft.Build.BackEnd.MSBuild.ExecuteInternal()   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Start<Microsoft.Build.BackEnd.MSBuild.<ExecuteInternal>d__73>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.MSBuild.ExecuteInternal()   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(taskExecutionHost, taskLoggingContext, taskHost, bucket, howToExecuteTask)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(taskExecutionHost, taskLoggingContext, taskHost, bucket, howToExecuteTask)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(taskLoggingContext, bucket, taskIdentityParameters, taskHost, howToExecuteTask)    Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<InitializeAndExecuteTask>d__24>(stateMachine) Unknown
    Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(taskLoggingContext, bucket, taskIdentityParameters, taskHost, howToExecuteTask)    Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteBucket>d__19>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__18>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__13>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetEntry.<ProcessBucket>d__48>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetEntry.<ExecuteTarget>d__42>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetBuilder.<ProcessTargetStack>d__22>(stateMachine) Unknown
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetBuilder.<BuildTargets>d__11>(stateMachine)   Unknown
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildProject>d__57>(stateMachine)  Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildAndReport>d__49>(stateMachine)    Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<RequestThreadProc>d__48>(stateMachine) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.WaitWithBuilderThreadStart(handles, recursive, threadingData, submissionId)  Unknown
    Microsoft.Build.Execution.BuildSubmission.Execute() Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetsImpl(targetNamesToBuild, targetOutputs, retainCachedProjectInstance, isRealBuild, isOutOfProcBuild, callback)    Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlagsAndOutputs(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild) Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlags(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild)   Unknown

Another:

>   System.Text.RegularExpressions.Regex.GroupNumberFromName(name)  Unknown
    System.Text.RegularExpressions.GroupCollection.this[string].get(groupname)  Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.MetadataExpander.MetadataMatchEvaluator.ExpandSingleMetadata(itemMetadataMatch)   Unknown
    System.Text.RegularExpressions.RegexReplacement.Replace(evaluator, regex, input, count, startat)    Unknown
    System.Text.RegularExpressions.Regex.Replace(input, evaluator, count, startat)  Unknown
    System.Text.RegularExpressions.Regex.Replace(input, evaluator)  Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.MetadataExpander.ExpandMetadataLeaveEscaped(expression, metadata, options)    Unknown
    Microsoft.Build.Evaluation.Expander<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.ExpandIntoStringLeaveEscaped(expression, options, elementLocation)    Unknown
    Microsoft.Build.Evaluation.Expander<System.__Canon, System.__Canon>.ExpandIntoStringAndUnescape(expression, options, elementLocation)   Unknown
    Microsoft.Build.Evaluation.ConditionEvaluator.ConditionEvaluationState<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>.ExpandIntoStringBreakEarly(expression) Unknown
    Microsoft.Build.Evaluation.StringExpressionNode.EvaluatesToEmpty(state) Unknown
    Microsoft.Build.Evaluation.MultipleComparisonNode.BoolEvaluate(state)   Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.OrExpressionNode.BoolEvaluate(state) Unknown
    Microsoft.Build.Evaluation.GenericExpressionNode.Evaluate(state)    Unknown
    Microsoft.Build.Evaluation.ConditionEvaluator.EvaluateConditionCollectingConditionedProperties<Microsoft.Build.Execution.ProjectPropertyInstance, Microsoft.Build.Execution.ProjectItemInstance>(condition, options, expander, expanderOptions, conditionedPropertiesTable, evaluationDirectory, elementLocation, loggingServices, buildEventContext, projectRootElementCache)  Unknown
    Microsoft.Build.BackEnd.ItemGroupIntrinsicTask.ExecuteTask(lookup)  Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteIntrinsicTask(bucket)    Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteBucket>d__19>(stateMachine)    C#
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(taskHost, bucket, howToExecuteTask, lookupHash)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__18>(stateMachine)  C#
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(mode, lookup)   Unknown
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TaskBuilder.<ExecuteTask>d__13>(stateMachine)  C#
    Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(loggingContext, requestEntry, targetBuilderCallback, taskInstance, mode, inferLookup, executeLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetEntry.<ProcessBucket>d__48>(stateMachine)    C#
    Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(taskBuilder, targetLoggingContext, mode, lookupForInference, lookupForExecution)  Unknown
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetEntry.<ExecuteTarget>d__42>(stateMachine)    C#
    Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(taskBuilder, requestEntry, projectLoggingContext, cancellationToken)  Unknown
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.TargetBuilder.<ProcessTargetStack>d__22>(stateMachine) C#
    Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(taskBuilder)   Unknown
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.TargetBuilder.<BuildTargets>d__11>(stateMachine)   C#
    Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(loggingContext, entry, callback, targetNames, baseLookup, cancellationToken) Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildProject>d__57>(stateMachine)  C#
    Microsoft.Build.BackEnd.RequestBuilder.BuildProject()   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<BuildAndReport>d__49>(stateMachine)    C#
    Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport() Unknown
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<Microsoft.Build.BackEnd.RequestBuilder.<RequestThreadProc>d__48>(stateMachine) C#
    Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(setThreadParameters)   Unknown
    Microsoft.Build.BackEnd.RequestBuilder.WaitWithBuilderThreadStart(handles, recursive, threadingData, submissionId)  Unknown
    Microsoft.Build.Execution.BuildSubmission.Execute() Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetsImpl(targetNamesToBuild, targetOutputs, retainCachedProjectInstance, isRealBuild, isOutOfProcBuild, callback)    Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlagsAndOutputs(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild) Unknown
    Microsoft.VisualStudio.Build.ComInteropWrapper.ProjectShim.BuildTargetListWithFlags(targetList, targetOutputs, buildFlags, isRealBuild, isOutOfProcBuild)   Unknown

It's like we're actually doing the build on the UI thread itself.

Everyone of these stacks is a design-time build from the legacy project system. It has always done a design-time build on the UI thread, and probably will always do a design-time build on the UI thread. Given our succession plan to replace it with CPS, we're not making changes around this.

To make this bug actionable, is this new behavior or existing behavior that you've just got around to reporting? For example, this bug https://github.com/dotnet/project-system/issues/2119 shows a new interaction that is caused by the introduction of CPS projects, those are the issues were going to tackle.

It has always done a design-time build on the UI thread, and probably will always do a design-time build on the UI thread

Why is a design time build being done? I just did a normal build. Why is this design time build happening right when the normal build completes?

is this new behavior or existing behavior that you've just got around to reporting?

I've seen this now and hten, but recently the experience in VS has gotten so excruciating that i'm just trying to collect and report every crash and hang i run into.

It's seriously bad now. To the point that i can go use the bathroom (on a different floor), as well as make myself tea, and still come back and be waiting on vsloading/builds/hangs/etc. :(

It feels like overall VS has absolutely nose-dived on perf between RTM and now.

To give context, my old approach was:

Select "Roslyn.sln" from my VS jump list. The moment the shell came up, hit f5 to launch into my hive (building if necessary) under the debugger. If things were already built, this was usually less than 5-10 seconds. If things weren't built, well there would be the build cost, then i could be in my hive working. 5-10 seconds wasn't great, but it was a totally workable development loop.

That loop now has a 2+ minute pause in it minimum. This is especially awful as my normal dev cycle is to jump between branches continuously, and i need to close/reopen VS for that. When i have a dozen or so branches/PRs that i'm bouncing around during the day, this overhead is very significant and painful. :(

@srivatsn Can this be looked at?

@CyrusNajmabadi Are you still hitting this after @jaredpar moved all the projects to CPS? As mention above, this is a well known performance issue where the design-time build is being done on a UI thread in the legacy project system.

@srivatsn I'm moving this out of 15.3 - this is all legacy project system stack, has been this way since build was moved out of proc (Dev11?)

I know i'm hitting huge UI delays. I'm not sure if they're this issue anymore though. I can try to collect more data to find out.

@CyrusNajmabadi Everyone one of those stacks is the legacy project system.

Yes, file new bugs if you have new delays.

Note that the commit you gave me for https://github.com/dotnet/project-system/issues/2576 still has legacy project system projects in the solution.

@panopticoncentral is looking at these designtime builds, and may dupe this

There have been major changes to the way design-time builds have been done in the csproj project system and in the CPS project system. If you're still seeing problems, let's open a new issue with new information.

Was this page helpful?
0 / 5 - 0 ratings