jonathanpeppers
jonathanpeppers

Reputation: 26495

Weird Exception with JSON.Net in MonoTouch

I'm getting a similar error as the post here.

I'm parsing JSON with JSON.NET on a background thread just like him. It sporadically fails with an error in Array.Copy.

Here is a stacktrace:

System.NullReferenceException: Object reference not set to an instance of an object
  at System.Array.Copy (System.Array sourceArray, Int32 sourceIndex, System.Array destinationArray, Int32 destinationIndex, Int32 length) [0x00104] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/Array.cs:979 
  at System.Collections.ArrayList.CopyTo (Int32 index, System.Array array, Int32 arrayIndex, Int32 count) [0x0002d] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Collections/ArrayList.cs:3064 
  at System.Collections.ArrayList.CopyTo (System.Array array, Int32 arrayIndex) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Collections/ArrayList.cs:3046 
  at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, System.Type attributeType, Boolean inherit) [0x0026c] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/MonoCustomAttrs.cs:259 
  at System.MonoType.GetCustomAttributes (System.Type attributeType, Boolean inherit) [0x00011] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/MonoType.cs:582 
  at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttributes[JsonConverterAttribute] (ICustomAttributeProvider attributeProvider, Boolean inherit) [0x00000] in <filename unknown>:0 
  at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttribute[JsonConverterAttribute] (ICustomAttributeProvider attributeProvider, Boolean inherit) [0x00000] in <filename unknown>:0 
  ... Continues ...

Here is the offending code in JSON.Net:

#if !(NETFX_CORE)
    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
    {
      ValidationUtils.ArgumentNotNull(attributeProvider, "attributeProvider");

      object provider;

#if !PORTABLE
      provider = attributeProvider;
#else

...  omitted junk ...

      if (provider is Type)
        return (T[])((Type)provider).GetCustomAttributes(typeof(T), inherit);

I'm guessing GetCustomAttributes is returning null. Has anyone at Xamarin been aware of this issue? The guy on the newsgroup said he put this work on the main thread and it fixed it (but I'm not sure I want to do that).

Upvotes: 0

Views: 489

Answers (1)

Rolf Bjarne Kvinge
Rolf Bjarne Kvinge

Reputation: 19335

This is a known bug.

It is fixed in the 5.3.3 alpha release.

Upvotes: 2

Related Questions