Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: D
-
Labels:None
-
Environment:
DMD 2.060
Description
import msgpack; class Foo { int x; Bar obj; } class Bar { int x; Foo obj; } void main() { auto foo = new Foo(); auto bar = new Bar(); foo.obj = bar; bar.obj = foo; ubyte[] data = msgpack.pack(foo); }
This creates a stack overflow.
Trackbacks
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
[#MSGPACK-81] Cannot serialize class with circular references - MessagePack
Ok I can see a comment in msgpack-d that it's not supported. I have a branch that implements a workaround, however it can't be compatible with the MessagePack protocol because it introduces a new header (essentially a tag that marks a field as being a reference to an object). And I'm not sure if it would work with streaming.