Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Null pointer exception trying to decompile DLL in latest build #2712

Closed
avengerx opened this issue Jun 13, 2022 · 4 comments
Closed

Null pointer exception trying to decompile DLL in latest build #2712

avengerx opened this issue Jun 13, 2022 · 4 comments
Labels

Comments

@avengerx
Copy link

avengerx commented Jun 13, 2022

Steps to reproduce

Follow the steps in issue #2622

  1. Downdload and extract (7zip works): KB5007409 exchange patch from microsoft website
  2. Decompile Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.Components.dll into a project using ILSpy
    2.1. ILSpy GUI:
    2.1.1. Open the DLL
    2.1.2. Right click it
    2.1.3. Click "Save Code" and choose a target directory
    2.2. ILSpyCmd:
    2.2.1. Change to the directory where you extracted the .msp file and:
mkdir k
cd k
ilspycmd --languageversion latest --outputdir . --project --use-varnames-from-pdb --nested-directories ../Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.Components.dll

Error message shown

Release

Error decompiling @06000735 Microsoft.Office.Datacenter.ActiveMonitoring.ActiveMonitoring.MonitoringMailboxCleaner.CreateDefinition
in assembly "A:\games\stpt\ilspy\issue2622\Exchange2019-KB5007409-x64-en\Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.Components.dll"
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildArgumentList(ExpectedTargetDetails expectedTargetDetails, ResolveResult target, IMethod method, Int32 firstParamIndex, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap) in CallBuilder.cs:line 710
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildDictionaryInitializerExpression(OpCode callOpCode, IMethod method, InitializedObjectResolveResult target, IReadOnlyList`1 indices, ILInstruction value) in CallBuilder.cs:line 539
(...)

Debug

Process terminated. Assertion failed.
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.BuildArrayInitializerExpression(Block block, InitializedObjectResolveResult initObjRR) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3247
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.TranslateObjectAndCollectionInitializer(Block block) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3182
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitBlock(Block block, TranslationContext context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3111
   at ICSharpCode.Decompiler.IL.Block.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 876
(...)

Details

@avengerx avengerx added the Bug label Jun 13, 2022
@avengerx
Copy link
Author

avengerx commented Jun 13, 2022

Here's the full exception text:

System.AggregateException: One or more errors occurred. (Error decompiling @06000735 Microsoft.Office.Datacenter.ActiveMonitoring.ActiveMonitoring.MonitoringMailboxCleaner.CreateDefinition) (Error decompiling @0600077E Microsoft.Exchange.Monitoring.PassiveMonitoring.Common.PassiveCommonDiscovery.CreateInventoryCacheProbe)
 ---> Error decompiling @06000735 Microsoft.Office.Datacenter.ActiveMonitoring.ActiveMonitoring.MonitoringMailboxCleaner.CreateDefinition
in assembly "../Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.Components.dll"
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildArgumentList(ExpectedTargetDetails expectedTargetDetails, ResolveResult target, IMethod method, Int32 firstParamIndex, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap) in CallBuilder.cs:line 710
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildDictionaryInitializerExpression(OpCode callOpCode, IMethod method, InitializedObjectResolveResult target, IReadOnlyList`1 indices, ILInstruction value) in CallBuilder.cs:line 539
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.BuildArrayInitializerExpression(Block block, InitializedObjectResolveResult initObjRR) in ExpressionBuilder.cs:line 3188
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.TranslateObjectAndCollectionInitializer(Block block) in ExpressionBuilder.cs:line 3182
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitBlock(Block block, TranslationContext context) in ExpressionBuilder.cs:line 3111
   at ICSharpCode.Decompiler.IL.Block.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in Instructions.cs:line 876
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitConv(Conv inst, TranslationContext context) in ExpressionBuilder.cs:line 2020
   at ICSharpCode.Decompiler.IL.Conv.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in Instructions.cs:line 2275
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitLeave(Leave inst) in StatementBuilder.cs:line 383
   at ICSharpCode.Decompiler.IL.Leave.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 1316
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockStatement blockStatement, BlockContainer container, IEnumerable`1 blocks, Boolean isLoop) in StatementBuilder.cs:line 1395
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop) in StatementBuilder.cs:line 1333
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container) in StatementBuilder.cs:line 1219
   at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 847
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst) in StatementBuilder.cs:line 83
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1694
-- continuing with outer exception (ICSharpCode.Decompiler.DecompilerException) --
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1718
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(IMethod method, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1567
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.<>c__DisplayClass70_0.<DoDecompile>g__DoDecompileMember|0(IEntity entity, RecordDecompiler recordDecompiler) in CSharpDecompiler.cs:line 1434
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(ITypeDefinition typeDef, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1328
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompileTypes(IEnumerable`1 types, DecompileRun decompileRun, ITypeResolveContext decompilationContext, SyntaxTree syntaxTree) in CSharpDecompiler.cs:line 620
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileTypes(IEnumerable`1 types) in CSharpDecompiler.cs:line 928
   at ICSharpCode.Decompiler.CSharp.ProjectDecompiler.WholeProjectDecompiler.<>c__DisplayClass45_0.<WriteCodeFilesInProject>b__2(IGrouping`2 file) in WholeProjectDecompiler.cs:line 239
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) in offset 259
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in offset 17
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(Exception source) in offset 0
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) in offset 609
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion) in offset 0
   at System.Threading.Tasks.TaskReplicator.Replica.Execute() in offset 0
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 body)
   at ICSharpCode.Decompiler.CSharp.ProjectDecompiler.WholeProjectDecompiler.WriteCodeFilesInProject(PEFile module, CancellationToken cancellationToken) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ProjectDecompiler\WholeProjectDecompiler.cs:line 226
   at ICSharpCode.Decompiler.CSharp.ProjectDecompiler.WholeProjectDecompiler.DecompileProject(PEFile moduleDefinition, String targetDirectory, TextWriter projectFileWriter, CancellationToken cancellationToken) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ProjectDecompiler\WholeProjectDecompiler.cs:line 150
   at ICSharpCode.ILSpyCmd.ILSpyCmdProgram.DecompileAsProject(String assemblyFileName, String projectFileName) in A:\games\stpt\ilspy\src\ICSharpCode.ILSpyCmd\IlspyCmdProgram.cs:line 276
   at ICSharpCode.ILSpyCmd.ILSpyCmdProgram.OnExecute(CommandLineApplication app) in A:\games\stpt\ilspy\src\ICSharpCode.ILSpyCmd\IlspyCmdProgram.cs:line 0
 ---> (Inner Exception #1) Error decompiling @0600077E Microsoft.Exchange.Monitoring.PassiveMonitoring.Common.PassiveCommonDiscovery.CreateInventoryCacheProbe
in assembly "../Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.Components.dll"
 ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildArgumentList(ExpectedTargetDetails expectedTargetDetails, ResolveResult target, IMethod method, Int32 firstParamIndex, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap) in CallBuilder.cs:line 710
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildDictionaryInitializerExpression(OpCode callOpCode, IMethod method, InitializedObjectResolveResult target, IReadOnlyList`1 indices, ILInstruction value) in CallBuilder.cs:line 539
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.BuildArrayInitializerExpression(Block block, InitializedObjectResolveResult initObjRR) in ExpressionBuilder.cs:line 3188
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.TranslateObjectAndCollectionInitializer(Block block) in ExpressionBuilder.cs:line 3182
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitBlock(Block block, TranslationContext context) in ExpressionBuilder.cs:line 3111
   at ICSharpCode.Decompiler.IL.Block.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in Instructions.cs:line 876
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitConv(Conv inst, TranslationContext context) in ExpressionBuilder.cs:line 2020
   at ICSharpCode.Decompiler.IL.Conv.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in Instructions.cs:line 2275
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildArgumentList(ExpectedTargetDetails expectedTargetDetails, ResolveResult target, IMethod method, Int32 firstParamIndex, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap) in CallBuilder.cs:line 745
   at ICSharpCode.Decompiler.CSharp.CallBuilder.Build(OpCode callOpCode, IMethod method, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap, IType constrainedTo) in CallBuilder.cs:line 289
   at ICSharpCode.Decompiler.CSharp.CallBuilder.Build(CallInstruction inst) in CallBuilder.cs:line 217
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitCallVirt(CallVirt inst, TranslationContext context) in ExpressionBuilder.cs:line 2248
   at ICSharpCode.Decompiler.IL.CallVirt.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in Instructions.cs:line 2193
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Default(ILInstruction inst) in StatementBuilder.cs:line 89
   at ICSharpCode.Decompiler.IL.ILVisitor`1.VisitCallVirt(CallVirt inst) in Instructions.cs:line 7298
   at ICSharpCode.Decompiler.IL.CallVirt.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 2189
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockStatement blockStatement, BlockContainer container, IEnumerable`1 blocks, Boolean isLoop) in StatementBuilder.cs:line 1395
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop) in StatementBuilder.cs:line 1333
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container) in StatementBuilder.cs:line 1219
   at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 847
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst) in StatementBuilder.cs:line 83
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1694
-- continuing with outer exception (ICSharpCode.Decompiler.DecompilerException) --
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1718
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(IMethod method, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1567
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.<>c__DisplayClass70_0.<DoDecompile>g__DoDecompileMember|0(IEntity entity, RecordDecompiler recordDecompiler) in CSharpDecompiler.cs:line 1434
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(ITypeDefinition typeDef, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in CSharpDecompiler.cs:line 1328
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompileTypes(IEnumerable`1 types, DecompileRun decompileRun, ITypeResolveContext decompilationContext, SyntaxTree syntaxTree) in CSharpDecompiler.cs:line 620
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileTypes(IEnumerable`1 types) in CSharpDecompiler.cs:line 928
   at ICSharpCode.Decompiler.CSharp.ProjectDecompiler.WholeProjectDecompiler.<>c__DisplayClass45_0.<WriteCodeFilesInProject>b__2(IGrouping`2 file) in WholeProjectDecompiler.cs:line 239
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) in offset 259
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in offset 17
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(Exception source) in offset 0
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion) in offset 609
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion) in offset 0
   at System.Threading.Tasks.TaskReplicator.Replica.Execute() in offset 0<---

@avengerx
Copy link
Author

The call stack points at CallBuilder:539, and then ExpressionBuilder:3188, but the actual call happens in ExpressionBuilder:3250... So yeah, built in Debug configuration and now the exception says:

Process terminated. Assertion failed.
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.BuildArrayInitializerExpression(Block block, InitializedObjectResolveResult initObjRR) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3247
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.TranslateObjectAndCollectionInitializer(Block block) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3182
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitBlock(Block block, TranslationContext context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 3111
   at ICSharpCode.Decompiler.IL.Block.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 876
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitConv(Conv inst, TranslationContext context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 2020
   at ICSharpCode.Decompiler.IL.Conv.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 2275
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.CallBuilder.BuildArgumentList(ExpectedTargetDetails expectedTargetDetails, ResolveResult target, IMethod method, Int32 firstParamIndex, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CallBuilder.cs:line 745
   at ICSharpCode.Decompiler.CSharp.CallBuilder.Build(OpCode callOpCode, IMethod method, IReadOnlyList`1 callArguments, IReadOnlyList`1 argumentToParameterMap, IType constrainedTo) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CallBuilder.cs:line 289
   at ICSharpCode.Decompiler.CSharp.CallBuilder.Build(CallInstruction inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CallBuilder.cs:line 217
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitCallVirt(CallVirt inst, TranslationContext context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 2248
   at ICSharpCode.Decompiler.IL.CallVirt.AcceptVisitor[C,T](ILVisitor`2 visitor, C context) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 2193
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ExpressionBuilder.cs:line 161
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Default(ILInstruction inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 89
   at ICSharpCode.Decompiler.IL.ILVisitor`1.VisitCallVirt(CallVirt inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 7298
   at ICSharpCode.Decompiler.IL.CallVirt.AcceptVisitor[T](ILVisitor`1 visitor) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 2189
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockStatement blockStatement, BlockContainer container, IEnumerable`1 blocks, Boolean isLoop) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 1403
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 1333
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 1219
   at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\IL\Instructions.cs:line 847
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 78
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\StatementBuilder.cs:line 83
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 1702
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(IMethod method, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 1567
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.<>c__DisplayClass70_0.<DoDecompile>g__DoDecompileMember|0(IEntity entity, RecordDecompiler recordDecompiler) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 1434
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(ITypeDefinition typeDef, DecompileRun decompileRun, ITypeResolveContext decompilationContext) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 1328
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompileTypes(IEnumerable`1 types, DecompileRun decompileRun, ITypeResolveContext decompilationContext, SyntaxTree syntaxTree) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 620
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileTypes(IEnumerable`1 types) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\CSharpDecompiler.cs:line 928
   at ICSharpCode.Decompiler.CSharp.ProjectDecompiler.WholeProjectDecompiler.<>c__DisplayClass45_0.<WriteCodeFilesInProject>b__2(IGrouping`2 file) in A:\games\stpt\ilspy\src\ICSharpCode.Decompiler\CSharp\ProjectDecompiler\WholeProjectDecompiler.cs:line 239
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   at System.Threading.Tasks.TaskReplicator.Replica.<>c.<Execute>b__7_0(Object s)
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
   at System.Threading.Tasks.Task.ExecuteEntryUnsafe(Thread threadPoolThread)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
   at System.Threading.Thread.StartCallback()

Which seems to be much more helpful. :)

@siegfriedpammer
Copy link
Member

Thanks a lot for reporting the issue and providing detailed information!

@avengerx
Copy link
Author

avengerx commented Jun 13, 2022

I confirm the fix resolved the issue and I can now decompile that assembly to completion!

clin1234 pushed a commit to clin1234/ILSpy that referenced this issue Jun 26, 2022
…to properly detect set-accessors of FakeProperties.

Bug likely introduced due to an oversight in icsharpcode#2677.
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 12, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants