http://bugzilla.novell.com/show_bug.cgi?id=582203
http://bugzilla.novell.com/show_bug.cgi?id=582203#c0 Summary: gendarme/cecil NullReferenceException when scanning C++ Assembly Classification: Mono Product: Mono: Tools Version: 2.6.x Platform: x86-64 OS/Version: Windows 7 Status: NEW Severity: Normal Priority: P5 - None Component: Gendarme AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- Created an attachment (id=344106) --> (http://bugzilla.novell.com/attachment.cgi?id=344106) assembly causing the error User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 When scanning a managed C++ DLL which does some COM work, gendarme dies with this stacktrace: Stack trace: System.NullReferenceException: Object reference not set to an instance of an object. at Mono.Cecil.Pdb.PdbCciReader.ReadScopeAndLocals(PdbScope scope, Scope parent, MethodBody body, IDictionary instructions) in P:\tempmono-complete\cecil\pdb\Mono.Cecil.Pdb\Mono.Cecil.Pdb\PdbCciReader.cs:line 117 at Mono.Cecil.Pdb.PdbCciReader.ReadScopeAndLocals(PdbScope[] scopes, Scope parent, MethodBody body, IDictionary instructions) in P:\tempmono-complete\cecil\pdb\Mono.Cecil.Pdb\Mono.Cecil.Pdb\PdbCciReader.cs:line 103 at Mono.Cecil.Pdb.PdbCciReader.Read(MethodBody body, IDictionary instructions) in P:\tempmono-complete\cecil\pdb\Mono.Cecil.Pdb\Mono.Cecil.Pdb\PdbCciReader.cs:line 88 at Mono.Cecil.Cil.CodeReader.ReadCilBody(MethodBody body, BinaryReader br) in P:\tempmono-complete\mcs\class\Mono.Cecil\Mono.Cecil.Cil\CodeReader.cs:line 242 at Mono.Cecil.Cil.CodeReader.VisitMethodBody(MethodBody body) in P:\tempmono-complete\mcs\class\Mono.Cecil\Mono.Cecil.Cil\CodeReader.cs:line 76 at Mono.Cecil.MethodDefinition.LoadBody() in P:\tempmono-complete\mcs\class\Mono.Cecil\Mono.Cecil\MethodDefinition.cs:line 572 at Mono.Cecil.MethodDefinition.get_Body() in P:\tempmono-complete\mcs\class\Mono.Cecil\Mono.Cecil\MethodDefinition.cs:line 100 at Gendarme.Framework.EngineController.Build(MethodDefinition method, EngineEventArgs e) in P:\tempmono-complete\mono-tools\gendarme\framework\Gendarme.Framework\EngineController.cs:line 132 at Gendarme.Framework.EngineController.Build(IList`1 list) in P:\tempmono-complete\mono-tools\gendarme\framework\Gendarme.Framework\EngineController.cs:line 102 at Gendarme.Framework.Runner.Initialize() in P:\tempmono-complete\mono-tools\gendarme\framework\Gendarme.Framework\Runner.cs:line 163 at Gendarme.ConsoleRunner.Initialize() in P:\tempmono-complete\mono-tools\gendarme\console\ConsoleRunner.cs:line 374 at Gendarme.ConsoleRunner.Execute(String[] args) in P:\tempmono-complete\mono-tools\gendarme\console\ConsoleRunner.cs:line 321 The line numbers reference a current SVN checkout (local rebuild), but the stacktrace seems to be the same as gendarme 2.6 shows on the same assembly. Looking at the code, this seems to happen because Mono.Cecil.Pdb.PdbCciReader.Read(MethodBody,IDictionary) receives a PdbFunction whose .scopes member contains nulls. Here is the output from the immediate window: function {Microsoft.Cci.Pdb.PdbFunction} address: 4946 flags: 1 iteratorClass: null iteratorScopes: null length: 57 lines: null module: "f:\\dd\\vctools\\crt_bld\\SELF_X86\\crt\\src\\build\\INTEL\\xdll_obj\\clr_obj\\mstartup.obj" name: "<CrtImplementationDetails>::LanguageSupport::Cleanup" namespaceScopes: null scopes: {Microsoft.Cci.Pdb.PdbScope[3]} segment: 1 slotToken: 285212716 token: 100663326 usingCounts: null function.scopes {Microsoft.Cci.Pdb.PdbScope[3]} [0]: {Microsoft.Cci.Pdb.PdbScope} [1]: null [2]: null The C++ assembly is compiled with Visual Studio 2008 Professional Edition Reproducible: Always Steps to Reproduce: 1. Compile managed C++ Assembly with VS2008 Professional 2. Run gendarme on it Actual Results: Null Reference Exception as described above Expected Results: normal gendarme run or error message refusing to run on unsupported assembly type -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
