[dmd-beta] D2 2.058 beta 4

Martin Nowak dawg at dawgfoto.de
Wed Feb 15 02:25:18 PST 2012


On Wed, 15 Feb 2012 08:52:52 +0100, Jacob Carlborg <doob at me.com> wrote:

> On 15 Feb, 2012,at 01:35 AM, Martin Nowak <dawg at dawgfoto.de> wrote:
>
>> > I'm seeing some general problem with array appending. Removing the
>> > append in the above method and the segfault moves to an other part of
>> > the code, which uses array appending.
>> >
>>
>> Any futher insights on this?
>> Even a bigger test case would be helpful if it reproduces the error.
> Unfortunately no. I have a big test case:
>
> This example: http://pastebin.com/k1QQnhEp
> together with Orange: https://github.com/jacob-carlborg/orange
>
> Just place the example in the same folder as Orange and run it with  
> RDMD.

I get an infinite recursion.

Starting from
Serializer.d(1107): return deserializeObject!(T)(keyOrId); // with keyOrId  
being "refme" the recursive field name in Foo

#29 0x000000000040a947 in  
orange.serialization.Serializer.Serializer.__T19deserializeInternalTC4main3FooTAyaZ.deserializeInternal()  
(this=0x8006c4a00, keyOrId=0x0000000000459eb00000000000000005) at  
orange/serialization/Serializer.d:1104
#30 0x000000000040ad53 in  
orange.serialization.Serializer.Serializer.__T29objectStructDeserializeHelperTC4main3FooZ.objectStructDeserializeHelper()  
(this=0x8006c4a00, value=<error reading variable>) at  
orange/serialization/Serializer.d:1482
#31 0x000000000040ac7e in  
orange.serialization.Serializer.Serializer.__T17deserializeObjectTC4main3FooTAyaZ.deserializeObject()  
(this=0x80128b1c0) at orange/serialization/Serializer.d:1181
#32 0x000000000040a89f in  
orange.serialization.Serializer.Serializer.__T13triggerEventsTC4main3FooZ.triggerEvents()  
(this=0x8006c4a00, dg=0x000000000040aa94000000080128b1c0,  
value=0x80128c860) at orange/serialization/Serializer.d:1749
#33 0x000000000040aa8b in  
orange.serialization.Serializer.Serializer.__T17deserializeObjectTC4main3FooTAyaZ.deserializeObject()  
(this=0x80128b1c0) at orange/serialization/Serializer.d:1153
#34 0x00000000004061cb in  
orange.serialization.archives.XmlArchive.__T10XmlArchiveTaZ.XmlArchive.unarchiveObject()  
(this=0x80128b140) at orange/serialization/archives/XmlArchive.d:1366
#35 0x0000000000417cdb in  
orange.util.Use.__T7restoreTvTS6orange3xml11XmlDocument19__T11XmlDocumentTaZ11XmlDocument4NodeZ.restore()  
(this=0x0, value=0x8006c6f50, dg=0x000000000040603c000000080128b140) at  
orange/util/Use.d:162
#36 0x0000000000417b94 in  
orange.util.Use.__T13RestoreStructTvTS6orange3xml11XmlDocument19__T11XmlDocumentTaZ11XmlDocument4NodeZ.RestoreStruct.opIn()  
(this=0x7fffffbffc20, deleg=0x000000000040603c000000080128b140) at  
orange/util/Use.d:127
#37 0x0000000000406035 in  
orange.serialization.archives.XmlArchive.__T10XmlArchiveTaZ.XmlArchive.unarchiveObject()  
(this=0x8006c6f00, dg=..., result=0x80128b1c8, id=0x7fffffbffc98,  
key=0x0000000000459eb00000000000000005) at  
orange/serialization/archives/XmlArchive.d:1342
#38 0x000000000040aa2d in  
orange.serialization.Serializer.Serializer.__T17deserializeObjectTC4main3FooTAyaZ.deserializeObject()  
(this=0x8006c4a00, keyOrId=0x0000000000459eb00000000000000005) at  
orange/serialization/Serializer.d:1152
#39 0x000000000040a947 in  
orange.serialization.Serializer.Serializer.__T19deserializeInternalTC4main3FooTAyaZ.deserializeInternal()  
(this=0x8006c4a00, keyOrId=0x0000000000459eb00000000000000005) at  
orange/serialization/Serializer.d:1104


By the way, there are about 3 or 4 delegate context allocations within  
this cycles.


More information about the dmd-beta mailing list