Archived
This forum has been archived. Please start a new discussion on GitHub.
dumpdb overflows stack
Hi,
dumpdb is overflowing the stack when it tries to read a record from an evictor database. It looks to me like the visitor isn't handling cycles in the object references:
...
#2921 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2922 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2923 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2924 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2925 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2926 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2927 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2928 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2929 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2930 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2931 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2932 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2933 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2934 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2935 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
...
The object being dumped is an instance of ScheduleVersionI.
The relevant slice definition is:
struct StringPair
{
string key;
string value;
};
sequence<StringPair> StringPairSeq;
class StageInfoI;
sequence<StageInfoI> StageInfoISeq;
class StageInfoI
{
int id;
string name;
string longname;
StageInfoISeq parents;
StageInfoISeq children;
StringPairSeq rules;
StringPairSeq attributes;
};
class ScheduleVersionI implements ScheduleVersionIF
{
int id;
StageInfoISeq stageInfo;
nonmutating bool equals(ScheduleVersionI ver);
};
I'll work on debugging, but thought someone else might see something obvious that will take me a while to discover.
Thanks,
dumpdb is overflowing the stack when it tries to read a record from an evictor database. It looks to me like the visitor isn't handling cycles in the object references:
...
#2921 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2922 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2923 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2924 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2925 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2926 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2927 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2928 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2929 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2930 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2931 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
#2932 0x000000000041c20d in FreezeScript::DumpVisitor::visitSequence ()
#2933 0x00000000004628e0 in FreezeScript::SequenceData::visit ()
#2934 0x000000000041bdd9 in FreezeScript::DumpVisitor::visitObject ()
#2935 0x00000000004617e0 in FreezeScript::ObjectRef::visit ()
...
The object being dumped is an instance of ScheduleVersionI.
The relevant slice definition is:
struct StringPair
{
string key;
string value;
};
sequence<StringPair> StringPairSeq;
class StageInfoI;
sequence<StageInfoI> StageInfoISeq;
class StageInfoI
{
int id;
string name;
string longname;
StageInfoISeq parents;
StageInfoISeq children;
StringPairSeq rules;
StringPairSeq attributes;
};
class ScheduleVersionI implements ScheduleVersionIF
{
int id;
StageInfoISeq stageInfo;
nonmutating bool equals(ScheduleVersionI ver);
};
I'll work on debugging, but thought someone else might see something obvious that will take me a while to discover.
Thanks,
0
Comments
-
Andrew,
I wanted to follow up to let you know that this bug was fixed in Ice 3.1.0.
Thanks again,
- Mark0