Julien Cristau <[email protected]> writes:
> atlas-cpp seems to FTBFS on ia64.
>
> See the build log at
> https://buildd.debian.org/status/fetch.php?pkg=atlas-cpp&arch=ia64&ver=0.6.2-1&stamp=1330801228
Here is a backtrace from running the failing test under gdb:
(gdb) bt
#0 0x4000000000010ee1 in incRef (this=0x50000000000) at
../../Atlas/Objects/BaseObject.h:300
#1 incRef (this=<synthetic pointer>) at ../../Atlas/Objects/SmartPtr.h:101
#2 SmartPtr (a=..., this=<synthetic pointer>) at
../../Atlas/Objects/SmartPtr.h:34
#3 testValues () at objects2.cpp:241
#4 0x4000000000006430 in main () at objects2.cpp:439
The line in objects2.cpp:241 reads:
Root obj =
Atlas::Objects::objectDefinitions.find(std::string("account"))->second;
It looks like the test tries to get a value out of an empty map. With
the attached patch I got this additional output from running the
objects2 test on both amd64 and ia64:
size == 0
empty == 1
So it looks like the bug itself isn't specific to ia64, but only causes
a segfault there (for whatever reason).
Regards,
Ansgar
--- a/tests/Objects/objects2.cpp
+++ b/tests/Objects/objects2.cpp
@@ -238,6 +238,8 @@
{
Atlas::Message::MapType mobj;
+ std::cerr << "size == " << Atlas::Objects::objectDefinitions.size() << std::endl;
+ std::cerr << "empty == " << Atlas::Objects::objectDefinitions.empty() << std::endl;
Root obj = Atlas::Objects::objectDefinitions.find(std::string("account"))->second;
assert(obj->getClassNo() == Atlas::Objects::Entity::ACCOUNT_NO);
assert(obj->getId() == "account");