Articulate
Articulate copied to clipboard
StackOverflow Exception browsing tag routes if more than (x) tags
In testing with 314 posts and 78 unique tags browsing to the /tags route generates a StackOverflow exception within a few seconds. 308 posts and 35 tags does not seem to cause an issue.
It does not appear to be related to tag or post contents; the issue can be recreated creating dummy post and tag data with the import routines.
The stack trace available at the time shows recursive calls to serialisation; don't have any traces back to Articulate or Umbraco managed code.
Attached dummy BlogML import feed allows problem to be recreated. It's just 75 numbered posts with same Id used to create 75 categories / tags.
Issue occurs when browsing the /tags or /categories route.
Active frame stack dump:
> System.Runtime.Serialization.dll!System.Xml.XmlStreamNodeWriter.UnsafeGetUTF8Chars(char* chars, int charCount, byte[] buffer, int offset) Unknown
System.Runtime.Serialization.dll!System.Xml.XmlStreamNodeWriter.UnsafeWriteUTF8Chars(char* chars, int charCount) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.WriteEscapedJsonString(string str) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.WriteString(string text) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.WriteValue(string value) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.StringDataContract.WriteXmlValue(System.Runtime.Serialization.XmlWriterDelegator writer, object obj, System.Runtime.Serialization.XmlObjectSerializerWriteContext context) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool verifyKnownType, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle objectTypeHandle, System.Type objectType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
[Lightweight Function]
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
[Lightweight Function]
We'll de-duplicate and merge tag groups during export/import as having too many tags causes other issues like UX and maintenance.