[Mono-bugs] [Bug 575439] New: RuntimeLicenseContext.LoadAssemblyLicenses throws "System.ArgumentException : Key duplication..."

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Jan 29 18:10:29 EST 2010



           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: mono-bugs at lists.ximian.com
        ReportedBy: kring at agi.com
         QAContact: mono-bugs at lists.ximian.com
          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

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.

More information about the mono-bugs mailing list