[Mono-bugs] [Bug 658689] New: ThreadLocal<T> where T is an interface - uninitialized value throws exception

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Dec 9 22:01:31 EST 2010


https://bugzilla.novell.com/show_bug.cgi?id=658689

https://bugzilla.novell.com/show_bug.cgi?id=658689#c0


           Summary: ThreadLocal<T> where T is an interface - uninitialized
                    value throws exception
    Classification: Mono
           Product: Mono: Class Libraries
           Version: SVN
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: robashton at codeofrob.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10
(KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10

Given the following code


        class MainClass
        {
                public static void Main (string[] args)
                {
                   ThreadLocal<IPointlessActions> newLocal = new
ThreadLocal<IPointlessActions>();
                   bool willThrowAnException = newLocal.Value == null;
                }
        }

        public interface IPointlessActions
        {
                void DoSomething();
        }


We will get an exception, on the MS implementation it will return null.

http://msdn.microsoft.com/en-us/library/dd642283.aspx

The documentation states

If this instance was not previously initialized for the current thread,
accessing Value will attempt to initialize it. If an initialization function
was supplied during the construction, that initialization will happen by
invoking the function to retrieve the initial value for Value. Otherwise, the
default value of will be used. If an exception is thrown, that exception is
cached and thrown on each subsequent access of the property.

This to me suggests default(T)

I have/will be very shortly submitting a pull request via Github for this
issue.

Reproducible: Always

Steps to Reproduce:
1.Run the code above
Actual Results:  
Exception gets thrown

Expected Results:  
Null should be returned

-- 
Configure bugmail: https://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