Skip to content

[net8 preview 2] dotnet new command never finishes for unknown parameter condition evaluation #6366

Closed

Description

[ORIGINATES FROM https://github.com/dotnet/templates/issues/723]

dotnet new command never finishes and seems to fall in an infinite loop during parameter condition evaluation with net8 preview 2.
The same template works properly with latest net7 builds.

Steps to repro
Install .NET 8 Preview 2
dotnet new install Uno.Templates
dotnet new unoapp -o testapp
The command fails to finish and is stuck in the following expression (original template source):

	this	Cannot obtain value of the local variable or argument because it is not available at this instruction pointer, possibly because it has been optimized away.	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro
	environmentSettings	{Microsoft.TemplateEngine.Edge.EngineEnvironmentSettings}	Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings {Microsoft.TemplateEngine.Edge.EngineEnvironmentSettings}
	variableCollection	{Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ParameterBasedVariableCollection}	Microsoft.TemplateEngine.Abstractions.IVariableCollection {Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ParameterBasedVariableCollection}
	config	{Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig}	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig
	Type	"evaluate"	string
	VariableName	"useFrameNav"	string
	Static members		
	Non-Public members		
	Condition	"!useDependencyInjection || navigationEvaluator == 'blank'"	string
	DataType	"bool"	string
	Evaluator	{Method = {Boolean EvaluateFromString(Microsoft.Extensions.Logging.ILogger, System.String, Microsoft.TemplateEngine.Abstractions.IVariableCollection)}}	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.ConditionStringEvaluator
	Macro	{Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro}	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro

At the following stack:

   Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.ScopeBuilder<Microsoft.TemplateEngine.Core.Expressions.Operators, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.Build(ref int bufferLength, ref int bufferPosition, System.Action<System.Collections.Generic.IReadOnlyList<byte>> onFault, System.Collections.Generic.HashSet<string> referencedVariablesKeys)	Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.Evaluate(Microsoft.TemplateEngine.Core.Contracts.IProcessorState processor, ref int bufferLength, ref int currentBufferPosition, out string faultedMessage, System.Collections.Generic.HashSet<string> referencedVariablesKeys, bool shouldProcessWholeBuffer)	Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.EvaluateFromString(Microsoft.Extensions.Logging.ILogger logger, string text, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables, out string faultedMessage, System.Collections.Generic.HashSet<string> referencedVariablesKeys)	Unknown
Microsoft.TemplateEngine.Core.dll!Microsoft.TemplateEngine.Core.Expressions.Shared.SharedEvaluatorDefinition<Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition, Microsoft.TemplateEngine.Core.Expressions.Cpp2.Cpp2StyleEvaluatorDefinition.Tokens>.EvaluateFromString(Microsoft.Extensions.Logging.ILogger logger, string text, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables)	Unknown
>	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro.Evaluate(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.IVariableCollection variableCollection, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig config)	Unknown
Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.BaseMacroConfig<Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacro, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros.EvaluateMacroConfig>.Evaluate(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.IVariableCollection vars)	Unknown
	Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.MacroProcessor.ProcessMacros(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Orchestrator.RunnableProjects.GlobalRunConfig runConfig, Microsoft.TemplateEngine.Abstractions.IVariableCollection variables)	Unknown
Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll!Microsoft.TemplateEngine.Orchestrator.RunnableProjects.RunnableProjectGenerator.Microsoft.TemplateEngine.Abstractions.IGenerator.GetCreationEffectsAsync(Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Abstractions.ITemplate templateData, Microsoft.TemplateEngine.Abstractions.Parameters.IParameterSetData parameters, string targetDirectory, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Edge.dll!Microsoft.TemplateEngine.Edge.Template.TemplateCreator.InstantiateAsync(Microsoft.TemplateEngine.Abstractions.ITemplateInfo templateInfo, string name, string fallbackName, string outputPath, Microsoft.TemplateEngine.Edge.Template.InputDataSet inputParameters, bool forceCreation, string baselineName, bool dryRun, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.TemplateInvoker.CreateTemplateAsync(Microsoft.TemplateEngine.Cli.Commands.TemplateCommandArgs templateArgs, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.TemplateInvoker.InvokeTemplateAsync(Microsoft.TemplateEngine.Cli.Commands.TemplateCommandArgs templateArgs, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.TemplateCommand.InvokeAsync(System.CommandLine.ParseResult parseResult, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.InstantiateCommand.HandleTemplateInstantationAsync(Microsoft.TemplateEngine.Cli.Commands.InstantiateCommandArgs args, Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager templatePackageManager, Microsoft.TemplateEngine.Cli.TemplateGroup templateGroup, System.Threading.CancellationToken cancellationToken)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.InstantiateCommand.ExecuteIntAsync(Microsoft.TemplateEngine.Cli.Commands.InstantiateCommandArgs instantiateArgs, Microsoft.TemplateEngine.Abstractions.IEngineEnvironmentSettings environmentSettings, Microsoft.TemplateEngine.Edge.Settings.TemplatePackageManager templatePackageManager, System.CommandLine.Invocation.InvocationContext context)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.BaseCommand<Microsoft.TemplateEngine.Cli.Commands.NewCommandArgs>.InvokeAsync(System.CommandLine.Invocation.InvocationContext context)	Unknown
Microsoft.TemplateEngine.Cli.dll!Microsoft.TemplateEngine.Cli.Commands.BaseCommand<System.__Canon>.Invoke(System.CommandLine.Invocation.InvocationContext context)	Unknown
System.CommandLine.dll!System.CommandLine.Invocation.InvocationPipeline.BuildInvocationChain.AnonymousMethod__0(System.CommandLine.Invocation.InvocationContext invocationContext, System.Func<System.CommandLine.Invocation.InvocationContext, System.Threading.Tasks.Task> _)	Unknown
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Labels

Iteration:2023JuneIteration:2023MaytriagedThe issue was evaluated by the triage team, placed on correct area, next action defined.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions