[protobuf] segfault when deserializing under high concurrency

2013-10-15 Thread chris
So part of this is a mono bug,  segfaults shouldn't be happening in managed 
code period.  

I'm embedding mono 3 in a java app and consistently get the following when 
deserializing a simple protobuf message.

Stacktrace:

  at unknown 0x
  at (wrapper managed-to-native) System.Buffer.BlockCopyInternal 
(System.Array,int,System.Array,int,int) 0x
  at System.Buffer.BlockCopy (System.Array,int,System.Array,int,int) 
0x0006b
  at System.IO.MemoryStream.Read (byte[],int,int) 0x000ff
  at ProtoBuf.ProtoReader.Ensure (int,bool) 0x00237
  at ProtoBuf.ProtoReader.TryReadUInt32VariantWithoutMoving (bool,uint) 
0x00043
  at ProtoBuf.ProtoReader.TryReadUInt32Variant (uint) 0x0001f
  at ProtoBuf.ProtoReader.ReadFieldHeader () 0x00057
  at (wrapper dynamic-method) 
com.game_machine.entity_system.generated.Entity.proto_2 
(object,ProtoBuf.ProtoReader) 0x02802
  at 
ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read
 
(object,ProtoBuf.ProtoReader) 0x0003f
  at ProtoBuf.Meta.RuntimeTypeModel.Deserialize 
(int,object,ProtoBuf.ProtoReader) 0x00150
  at ProtoBuf.Meta.TypeModel.DeserializeCore 
(ProtoBuf.ProtoReader,System.Type,object,bool) 0x00064
  at ProtoBuf.Meta.TypeModel.Deserialize 
(System.IO.Stream,object,System.Type,ProtoBuf.SerializationContext) 
0x0009b
  at ProtoBuf.Meta.TypeModel.Deserialize 
(System.IO.Stream,object,System.Type) 0x0001f
  at ProtoBuf.Serializer.DeserializeT (System.IO.Stream) 0x00043
  at GameMachine.Actor.ByteArrayToEntity (byte[]) 0x00047
  at GameMachine.TestActor.OnReceive (byte[]) 0x0006b
  at (wrapper runtime-invoke) Module.runtime_invoke_void__this___object 
(object,intptr,intptr,intptr) 0x


This goes away if I just run in a single thread.  It also takes an average 
of 10,000 iterations or so to trigger this error.  I also tried wrapping 
all deserialization calls in a mutex but that had no effect.

The threading model is such that none of the objects I am deserializing are 
accessed concurrently by different threads.

Is protobuf-net completely reentrant, or does it try to reuse objects 
anywhere? 

This could very well all be a mono bug, but thought I would check here 
first to see if someone had any ideas.

Chris

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [protobuf] segfault when deserializing under high concurrency

2013-10-15 Thread Marc Gravell
Firstly: exactly what version is this? There was a bug in 663 relating to
threading (and which only exhibited after extended usage) that was fixed in
something like 668. If you are using something = 663 and  668 then please
update and retry.

Marc
(protobuf-net)
On 15 Oct 2013 16:22, ch...@ochsnet.com wrote:

 So part of this is a mono bug,  segfaults shouldn't be happening in
 managed code period.

 I'm embedding mono 3 in a java app and consistently get the following when
 deserializing a simple protobuf message.

 Stacktrace:

   at unknown 0x
   at (wrapper managed-to-native) System.Buffer.BlockCopyInternal
 (System.Array,int,System.Array,int,int) 0x
   at System.Buffer.BlockCopy (System.Array,int,System.Array,int,int)
 0x0006b
   at System.IO.MemoryStream.Read (byte[],int,int) 0x000ff
   at ProtoBuf.ProtoReader.Ensure (int,bool) 0x00237
   at ProtoBuf.ProtoReader.TryReadUInt32VariantWithoutMoving (bool,uint)
 0x00043
   at ProtoBuf.ProtoReader.TryReadUInt32Variant (uint) 0x0001f
   at ProtoBuf.ProtoReader.ReadFieldHeader () 0x00057
   at (wrapper dynamic-method)
 com.game_machine.entity_system.generated.Entity.proto_2
 (object,ProtoBuf.ProtoReader) 0x02802
   at
 ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read
 (object,ProtoBuf.ProtoReader) 0x0003f
   at ProtoBuf.Meta.RuntimeTypeModel.Deserialize
 (int,object,ProtoBuf.ProtoReader) 0x00150
   at ProtoBuf.Meta.TypeModel.DeserializeCore
 (ProtoBuf.ProtoReader,System.Type,object,bool) 0x00064
   at ProtoBuf.Meta.TypeModel.Deserialize
 (System.IO.Stream,object,System.Type,ProtoBuf.SerializationContext)
 0x0009b
   at ProtoBuf.Meta.TypeModel.Deserialize
 (System.IO.Stream,object,System.Type) 0x0001f
   at ProtoBuf.Serializer.DeserializeT (System.IO.Stream) 0x00043
   at GameMachine.Actor.ByteArrayToEntity (byte[]) 0x00047
   at GameMachine.TestActor.OnReceive (byte[]) 0x0006b
   at (wrapper runtime-invoke) Module.runtime_invoke_void__this___object
 (object,intptr,intptr,intptr) 0x


 This goes away if I just run in a single thread.  It also takes an average
 of 10,000 iterations or so to trigger this error.  I also tried wrapping
 all deserialization calls in a mutex but that had no effect.

 The threading model is such that none of the objects I am deserializing
 are accessed concurrently by different threads.

 Is protobuf-net completely reentrant, or does it try to reuse objects
 anywhere?

 This could very well all be a mono bug, but thought I would check here
 first to see if someone had any ideas.

 Chris

 --
 You received this message because you are subscribed to the Google Groups
 Protocol Buffers group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to protobuf+unsubscr...@googlegroups.com.
 To post to this group, send email to protobuf@googlegroups.com.
 Visit this group at http://groups.google.com/group/protobuf.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [protobuf] segfault when deserializing under high concurrency

2013-10-15 Thread chris
I was using 668, but this is a mono bug with reading streams I confirmed it 
with just reading from the stream myself.

Rather annoying, I updated to the latest mono 3 master because of a 
threading bug that was fixed 2 weeks ago, now this:)

Chris

On Tuesday, October 15, 2013 10:45:46 AM UTC-7, Marc Gravell wrote:

 Firstly: exactly what version is this? There was a bug in 663 relating to 
 threading (and which only exhibited after extended usage) that was fixed in 
 something like 668. If you are using something = 663 and  668 then please 
 update and retry.

 Marc
 (protobuf-net)
 On 15 Oct 2013 16:22, ch...@ochsnet.com javascript: wrote:

 So part of this is a mono bug,  segfaults shouldn't be happening in 
 managed code period.  

 I'm embedding mono 3 in a java app and consistently get the following 
 when deserializing a simple protobuf message.

 Stacktrace:

   at unknown 0x
   at (wrapper managed-to-native) System.Buffer.BlockCopyInternal 
 (System.Array,int,System.Array,int,int) 0x
   at System.Buffer.BlockCopy (System.Array,int,System.Array,int,int) 
 0x0006b
   at System.IO.MemoryStream.Read (byte[],int,int) 0x000ff
   at ProtoBuf.ProtoReader.Ensure (int,bool) 0x00237
   at ProtoBuf.ProtoReader.TryReadUInt32VariantWithoutMoving (bool,uint) 
 0x00043
   at ProtoBuf.ProtoReader.TryReadUInt32Variant (uint) 0x0001f
   at ProtoBuf.ProtoReader.ReadFieldHeader () 0x00057
   at (wrapper dynamic-method) 
 com.game_machine.entity_system.generated.Entity.proto_2 
 (object,ProtoBuf.ProtoReader) 0x02802
   at 
 ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read
  
 (object,ProtoBuf.ProtoReader) 0x0003f
   at ProtoBuf.Meta.RuntimeTypeModel.Deserialize 
 (int,object,ProtoBuf.ProtoReader) 0x00150
   at ProtoBuf.Meta.TypeModel.DeserializeCore 
 (ProtoBuf.ProtoReader,System.Type,object,bool) 0x00064
   at ProtoBuf.Meta.TypeModel.Deserialize 
 (System.IO.Stream,object,System.Type,ProtoBuf.SerializationContext) 
 0x0009b
   at ProtoBuf.Meta.TypeModel.Deserialize 
 (System.IO.Stream,object,System.Type) 0x0001f
   at ProtoBuf.Serializer.DeserializeT (System.IO.Stream) 0x00043
   at GameMachine.Actor.ByteArrayToEntity (byte[]) 0x00047
   at GameMachine.TestActor.OnReceive (byte[]) 0x0006b
   at (wrapper runtime-invoke) Module.runtime_invoke_void__this___object 
 (object,intptr,intptr,intptr) 0x


 This goes away if I just run in a single thread.  It also takes an 
 average of 10,000 iterations or so to trigger this error.  I also tried 
 wrapping all deserialization calls in a mutex but that had no effect.

 The threading model is such that none of the objects I am deserializing 
 are accessed concurrently by different threads.

 Is protobuf-net completely reentrant, or does it try to reuse objects 
 anywhere? 

 This could very well all be a mono bug, but thought I would check here 
 first to see if someone had any ideas.

 Chris

 -- 
 You received this message because you are subscribed to the Google Groups 
 Protocol Buffers group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to protobuf+u...@googlegroups.com javascript:.
 To post to this group, send email to prot...@googlegroups.comjavascript:
 .
 Visit this group at http://groups.google.com/group/protobuf.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.


[protobuf] store large data into files using protobuf

2013-10-15 Thread Rahul Vishnoi
Hi All,
i wanna store 1 billion unique numbers into files using protocol 
buffer but the default file size limit is set 64MB how can i store 1 
billion numbers into file.

Thanks

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.