Paje description of Platform XML is nested wrongly, crashes tracing
I've been trying to create an XML platform description whose structure looks like that:
- world
- zone-sa
- zone-gl
- zone-front
I've described the platform this way in the XML file, but when I enable tracing the resulting Paje file contains the following structure
- world
- zone-sa
- zone-gl
- zone-front
It looks like the XML parser is not properly closing (sealing?) the zones, and that results in zone that should be siblings ending up as descendants.
This seems to cause another problem: When I use the XML platform file, enabling tracing/platform/topology
crashes with the following exception [xbt_exception/CRITICAL] Uncaught exception std::out_of_range: map::at
(unfortunately, I'm not very familiar with C++, and I haven't figured out how to get a full back trace yet).
My current workaround is to describe the platform directly in C++. It's very fiddly to get the proper sequence of NetZone::set_parent
, NetZone::add_component
and the various seal()
methods (I didn't find it in the docs, and the errors that occur are various crashes without a clear cause), but it works.
Here is a version of a project that displays the problem. You can see the wrong hierarchy in the generate Paje file. If you switch on the tracing/platform/topology
option, you can also see the uncaught exception.