Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

"Hash code changed when merging AnalysisValues" while analyzing scikit-learn #379

Closed
jakebailey opened this issue Nov 9, 2018 · 1 comment
Assignees
Labels
bug Something isn't working
Milestone

Comments

@jakebailey
Copy link
Member

I get this Debug.Fail while attached to PLS when it's analyzing scikit-learn. The key seems to be changing:

key: {tuple[?, ?]tuple[str, list[float], list[float], ...][list, None, tuple, ]}
newKey: {tuple[[MockDataFrame, bytes, str, list, tuple, list...][float, list[str, str], None, tuple, ]tuple[str, list[float], list[float]...}

Copy/paste from the Call Stack pane:

>	System.Private.CoreLib.dll!System.Diagnostics.Debug.Assert(bool condition, string message, string detailMessage) Line 107	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddOne(ref Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.BucketSet buckets, Microsoft.PythonTools.Analysis.AnalysisValue key, int hc, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 425	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddOne(ref Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.BucketSet buckets, Microsoft.PythonTools.Analysis.AnalysisValue key, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 329	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddOne(Microsoft.PythonTools.Analysis.AnalysisValue key) Line 318	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.Add(Microsoft.PythonTools.Analysis.AnalysisValue item, out bool wasChanged, bool canMutate) Line 161	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.Add(Microsoft.PythonTools.Analysis.AnalysisValue item, out bool wasChanged, bool canMutate) Line 156	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.TypedDependencyInfo.AddType(Microsoft.PythonTools.Analysis.AnalysisValue ns) Line 117	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.TypedDef<Microsoft.PythonTools.Analysis.Analyzer.ReferenceableDependencyInfo>.AddTypes(Microsoft.PythonTools.Analysis.IVersioned projectEntry, Microsoft.PythonTools.Analysis.IAnalysisSet newTypes, bool enqueue, Microsoft.PythonTools.Analysis.IProjectEntry declaringScope) Line 261	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionScope.UpdateParameters(Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit unit, Microsoft.PythonTools.Analysis.Values.ArgumentSet others, bool enqueue, Microsoft.PythonTools.Analysis.Analyzer.FunctionScope scopeWithDefaultParameters, bool usePlaceholders) Line 199	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit.UpdateParameters(Microsoft.PythonTools.Analysis.Values.ArgumentSet callArgs, bool enqueue) Line 63	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Values.FunctionInfo.DoCall(Microsoft.PythonTools.Parsing.Ast.Node node, Microsoft.PythonTools.Analysis.AnalysisUnit callingUnit, Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit calledUnit, Microsoft.PythonTools.Analysis.Values.ArgumentSet callArgs) Line 156	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Values.FunctionInfo.Call(Microsoft.PythonTools.Parsing.Ast.Node node, Microsoft.PythonTools.Analysis.AnalysisUnit unit, Microsoft.PythonTools.Analysis.IAnalysisSet[] args, Microsoft.PythonTools.Parsing.Ast.NameExpression[] keywordArgNames) Line 98	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateCall(Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator ee, Microsoft.PythonTools.Parsing.Ast.Node node) Line 378	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateWorker(Microsoft.PythonTools.Parsing.Ast.Node node) Line 211	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.Evaluate(Microsoft.PythonTools.Parsing.Ast.Expression node) Line 55	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.AssignmentStatement node) Line 137	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.AssignmentStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 41	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.SuiteStatement node) Line 665	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 34	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.IfStatement node) Line 522	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.IfStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 45	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.SuiteStatement node) Line 665	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 34	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit.AnalyzeWorker(Microsoft.PythonTools.Analysis.Analyzer.DDG ddg, System.Threading.CancellationToken cancel) Line 88	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisUnit.Analyze(Microsoft.PythonTools.Analysis.Analyzer.DDG ddg, System.Threading.CancellationToken cancel) Line 139	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Analyze(Microsoft.PythonTools.Analysis.Deque<Microsoft.PythonTools.Analysis.AnalysisUnit> queue, System.Threading.CancellationToken cancel, System.Action<int> reportQueueSize, int reportQueueInterval) Line 75	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.PythonAnalyzer.AnalyzeQueuedEntries(System.Threading.CancellationToken cancel) Line 907	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Intellisense.AnalysisQueue.GroupAnalysis.Analyze(System.Threading.CancellationToken cancel) Line 229	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Intellisense.AnalysisQueue.HandleAnalyzable(Microsoft.PythonTools.Analysis.IAnalyzable item, Microsoft.PythonTools.Intellisense.AnalysisPriority priority, System.Threading.CancellationToken cancellationToken) Line 152	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Intellisense.AnalysisQueue.Enqueue.AnonymousMethod__0(System.Threading.CancellationToken ct) Line 136	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Intellisense.AnalysisQueue.ConsumerLoop() Line 64	C#
 	[Resuming Async Method]	
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 167	C#
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.AsyncStateMachineBox<Microsoft.PythonTools.Intellisense.AnalysisQueue.<ConsumerLoop>d__25>.MoveNext() Line 559	C#
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Runtime.CompilerServices.IAsyncStateMachineBox box, bool allowInlining) Line 798	C#
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject) Line 3276	C#
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem>.TrySetResult(Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem result) Line 421	C#
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem>.SetExistingTaskResult(Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem result) Line 639	C#
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem>.SetResult(Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem result) Line 629	C#
 	Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Intellisense.AnalysisQueue.ConsumeAsync() Line 89	C#
 	[Resuming Async Method]	
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 167	C#
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Microsoft.PythonTools.Intellisense.AnalysisQueue.QueueItem>.AsyncStateMachineBox<Microsoft.PythonTools.Intellisense.AnalysisQueue.<ConsumeAsync>d__26>.MoveNext() Line 559	C#
 	System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() Line 588	C#

@lostmsu
Copy link
Contributor

lostmsu commented Nov 12, 2018

I also started getting it on a different source base.

Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddOne(ref Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.BucketSet buckets, Microsoft.PythonTools.Analysis.AnalysisValue key, int hc, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 425	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddOne(ref Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.BucketSet buckets, Microsoft.PythonTools.Analysis.AnalysisValue key, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 329	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddFromEnumerator(ref Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.BucketSet buckets, System.Collections.Generic.IEnumerator<Microsoft.PythonTools.Analysis.AnalysisValue> items, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 240	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AddFromEnumerator(System.Collections.Generic.IEnumerator<Microsoft.PythonTools.Analysis.AnalysisValue> items) Line 232	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSetDetails.AnalysisHashSet.AnalysisHashSet(System.Collections.Generic.IEnumerable<Microsoft.PythonTools.Analysis.AnalysisValue> enumerable, System.Collections.Generic.IEqualityComparer<Microsoft.PythonTools.Analysis.AnalysisValue> comparer) Line 85	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSet.AsUnion(Microsoft.PythonTools.Analysis.IAnalysisSet set, Microsoft.PythonTools.Analysis.UnionComparer comparer, out bool wasChanged) Line 288	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisSet.AsUnion(Microsoft.PythonTools.Analysis.IAnalysisSet set, int strength, out bool wasChanged) Line 247	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.TypedDependencyInfo.MakeUnion(int strength) Line 130	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.TypedDef<Microsoft.PythonTools.Analysis.Analyzer.ReferenceableDependencyInfo>.MakeUnion(int strength) Line 415	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.TypedDef<Microsoft.PythonTools.Analysis.Analyzer.ReferenceableDependencyInfo>.MakeUnionStronger() Line 406	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.TypedDef<Microsoft.PythonTools.Analysis.Analyzer.ReferenceableDependencyInfo>.MakeUnionStrongerIfMoreThan(int typeCount, Microsoft.PythonTools.Analysis.IAnalysisSet extraTypes) Line 398	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionScope.UpdateParameters(Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit unit, Microsoft.PythonTools.Analysis.Values.ArgumentSet others, bool enqueue, Microsoft.PythonTools.Analysis.Analyzer.FunctionScope scopeWithDefaultParameters, bool usePlaceholders) Line 198	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit.UpdateParameters(Microsoft.PythonTools.Analysis.Values.ArgumentSet callArgs, bool enqueue) Line 64	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Values.FunctionInfo.DoCall(Microsoft.PythonTools.Parsing.Ast.Node node, Microsoft.PythonTools.Analysis.AnalysisUnit callingUnit, Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit calledUnit, Microsoft.PythonTools.Analysis.Values.ArgumentSet callArgs) Line 162	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Values.FunctionInfo.Call(Microsoft.PythonTools.Parsing.Ast.Node node, Microsoft.PythonTools.Analysis.AnalysisUnit unit, Microsoft.PythonTools.Analysis.IAnalysisSet[] args, Microsoft.PythonTools.Parsing.Ast.NameExpression[] keywordArgNames) Line 99	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateCall(Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator ee, Microsoft.PythonTools.Parsing.Ast.Node node) Line 378	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateWorker(Microsoft.PythonTools.Parsing.Ast.Node node) Line 211	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.Evaluate(Microsoft.PythonTools.Parsing.Ast.Expression node) Line 55	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.ExpressionStatement node) Line 217	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.ExpressionStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 33	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.SuiteStatement node) Line 675	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 34	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.IfStatement node) Line 538	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.IfStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 45	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(Microsoft.PythonTools.Parsing.Ast.SuiteStatement node) Line 675	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(Microsoft.PythonTools.Parsing.Ast.PythonWalker walker) Line 34	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.FunctionAnalysisUnit.AnalyzeWorker(Microsoft.PythonTools.Analysis.Analyzer.DDG ddg, System.Threading.CancellationToken cancel) Line 102	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.AnalysisUnit.Analyze(Microsoft.PythonTools.Analysis.Analyzer.DDG ddg, System.Threading.CancellationToken cancel) Line 141	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.Analyzer.DDG.Analyze(Microsoft.PythonTools.Analysis.Deque<Microsoft.PythonTools.Analysis.AnalysisUnit> queue, System.Threading.CancellationToken cancel, System.Action<int> reportQueueSize, int reportQueueInterval) Line 75	C#
Microsoft.Python.Analysis.Engine.dll!Microsoft.PythonTools.Analysis.PythonAnalyzer.AnalyzeQueuedEntries(System.Threading.CancellationToken cancel) Line 935	C#

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants