[CSHARP-1530] WriteSlice extension method throws exception when slice is backed by more than one chunk Created: 13/Jan/16  Updated: 20/Jan/16  Resolved: 14/Jan/16

Status: Closed
Project: C# Driver
Component/s: BSON
Affects Version/s: 2.2.1
Fix Version/s: 2.2.2

Type: Bug Priority: Major - P3
Reporter: Andrew Villadsen Assignee: Robert Stam
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Calling RawBsonDocument.ToBson sometimes results in an ArgumentOutOfRangeException, depending on the RawBsonDocument. A (partial) stack trace is

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: position
   at MongoDB.Bson.IO.ByteBufferSlice.EnsureValidPosition(Int32 position) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\IO\ByteBufferSlice.cs:line 205
   at MongoDB.Bson.IO.ByteBufferSlice.AccessBackingBytes(Int32 position) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\IO\ByteBufferSlice.cs:line 114
   at MongoDB.Bson.IO.BsonStreamExtensions.WriteSlice(BsonStream stream, IByteBuffer slice) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\IO\BsonStreamExtensions.cs:line 311
   at MongoDB.Bson.IO.BsonBinaryWriter.WriteRawBsonDocument(IByteBuffer slice) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\IO\BsonBinaryWriter.cs:line 534
   at MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase`1.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TBsonValue value) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\Serialization\Serializers\BsonValueSerializerBase.cs:line 80
   at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, Object value) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\Serialization\Serializers\SerializerBase.cs:line 125
   at MongoDB.Bson.BsonExtensionMethods.ToBson(Object obj, Type nominalType, BsonBinaryWriterSettings writerSettings, IBsonSerializer serializer, Action`1 configurator, BsonSerializationArgs args) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\BsonExtensionMethods.cs:line 90
   at MongoDB.Bson.BsonExtensionMethods.ToBson[TNominalType](TNominalType obj, IBsonSerializer`1 serializer, BsonBinaryWriterSettings writerSettings, Action`1 configurator, BsonSerializationArgs args) in C:\Development\mongo-csharp-driver-2.2.1\mongo-csharp-driver-2.2.1\src\MongoDB.Bson\BsonExtensionMethods.cs:line 46

At a glance it looks like the problem is in BsonStreamExtensions.WriteSlice, where position is being incremented incorrectly when the buffer has multiple chunks.



 Comments   
Comment by Githook User [ 14/Jan/16 ]

Author:

{u'username': u'rstam', u'name': u'rstam', u'email': u'robert@robertstam.org'}

Message: CSHARP-1530: Fix bug in WriteSlice when the slice is backed by more than one chunk.
Branch: v2.2.x
https://github.com/mongodb/mongo-csharp-driver/commit/26b31d34bf793b9de56442e88b9462e0869b842e

Comment by Githook User [ 14/Jan/16 ]

Author:

{u'username': u'rstam', u'name': u'rstam', u'email': u'robert@robertstam.org'}

Message: CSHARP-1530: Fix bug in WriteSlice when the slice is backed by more than one chunk.
Branch: master
https://github.com/mongodb/mongo-csharp-driver/commit/7722d379e10d2d17fba5ea763abfd98e1d51cda8

Generated at Wed Feb 07 21:39:53 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.