http://bugzilla.novell.com/show_bug.cgi?id=575439
http://bugzilla.novell.com/show_bug.cgi?id=575439#c0 Summary: RuntimeLicenseContext.LoadAssemblyLicenses throws "System.ArgumentException : Key duplication..." Classification: Mono Product: Mono: Class Libraries Version: 2.6.x Platform: All OS/Version: All Status: NEW Severity: Normal Priority: P5 - None Component: System AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- Description of Problem: RuntimeLicenseContext.LoadAssemblyLicenses throws a System.ArgumentException when multiple assemblies in the app domain contain licenses for the same class. Microsoft .NET does not throw an exception under the same circumstances - it appears to just use the first one it finds. The exception is: System.ArgumentException : Key duplication when adding: AGI.Foundation.Licensing, AGI.Foundation.Core, Version=999.0.691.0, Culture=neutral, PublicKeyToken=46f7a65aaf1b26a0 And the call stack from Mono looks like this: at System.Collections.Hashtable.PutImpl (System.Object key, System.Object value, Boolean overwrite) [0x00000] in <filename unknown>:0 at System.Collections.Hashtable.Add (System.Object key, System.Object value) [0x00000] in <filename unknown>:0 at System.ComponentModel.Design.RuntimeLicenseContext.LoadAssemblyLicenses (System.Collections.Hashtable targetkeys, System.Reflection.Assembly asm) [0x00000] in <filename unknown>:0 at System.ComponentModel.Design.RuntimeLicenseContext.LoadKeys () [0x00000] in <filename unknown>:0 at System.ComponentModel.Design.RuntimeLicenseContext.GetSavedLicenseKey (System.Type type, System.Reflection.Assembly resourceAssembly) [0x00000] in <filename unknown>:0 .. Steps to reproduce the problem: 1. Create two assemblies with licenses for the same class. This can be accomplished by adding the same licx file to both projects. 2. Load both assemblies into the appdomain. An easy way to do this is to load both assemblies into NUnit. 3. Call LicenseManager.CurrentContext.GetSavedLicenseKey(typeof(MyLicenseClass)). Actual Results: A System.ArgumentException is thrown. Expected Results: There is no exception and the first license found is returned. How often does this happen? Only on the first call to LicenseManager.CurrentContext.GetSavedLicenseKey. Later calls return without error. This is because the first license is loaded successfully before the exception occurs, and GetSavedLicenseKey does not load licenses a second time once the 'keys' Hashtable has been initialized. -- 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
