When < overloaded fn is called to compare the query_result_unit_t from the different subquery results. It iterates through the structure and compares. We can see that one of the iterator is not set.
(gdb) frame 12
#12 query_result_unit_t::operator< (this=this@entry=0x7f1f8c216320, rhs=...)
at controller/src/query_engine/set_operation.cc:19
19 controller/src/query_engine/set_operation.cc: No such file or directory.
(gdb) print it
$1 = (boost::variant<...>) which (1) = std::basic_string<char, std::char_traits<char>, std::allocator<char> > value = <error reading variable: Cannot access memory at address 0x28>
(gdb) print jt
$2 = (boost::variant<...>) which (1) = std::basic_string<char, std::char_traits<char>, std::allocator<char> > value = "default-domain:ctest-TestECMPwithSVMChangeIPv6-53059416:ctest-left_ctest-TestECMPwithSVMChangeIPv6-53059416-47773667"
This was the actual argument passed to the overloaded fn:
(gdb) frame 14
#14 set_intersection<__gnu_cxx::__normal_iterator<query_result_unit_t*, std::vector<query_result_unit_t> >, __gnu_cxx::__normal_iterator<query_result_unit_t*, std::vector<query_result_unit_t> >, std::back_insert_iterator<std::vector<query_result_unit_t> > > (__result=..., __last2=..., __first2={
timestamp = 1490302039966492,
info = std::vector of length 1, capacity 1 = {(boost::variant<...>) which (4) = boost::uuids::uuid value = (boost::uuids::uuid) 1c35cd20-2703-4855-8295-b3410c2859e3}
}, __last1=..., __first1={
timestamp = 1490302039966492,
info = std::vector of length 2, capacity 2 = {(boost::variant<...>) which (4) = boost::uuids::uuid value = (boost::uuids::uuid) 1c35cd20-2703-4855-8295-b3410c2859e3, (boost::variant<...>) which (1) = std::basic_string<char, std::char_traits<char>, std::allocator<char> > value = "default-domain:ctest-TestECMPwithSVMChangeIPv6-53059416:ctest-left_ctest-TestECMPwithSVMChangeIPv6-53059416-47773667"}
}) at /usr/include/c++/4.8/bits/stl_algo.h:5894
5894 else if (*__first2 < *__first1)
When < overloaded fn is called to compare the query_result_unit_t from the different subquery results. It iterates through the structure and compares. We can see that one of the iterator is not set. unit_t: :operator< (this=this@ entry=0x7f1f8c2 16320, rhs=...) src/query_ engine/ set_operation. cc:19 src/query_ engine/ set_operation. cc: No such file or directory. :variant< ...>) which (1) = std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > value = <error reading variable: Cannot access memory at address 0x28> :variant< ...>) which (1) = std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > value = "default- domain: ctest-TestECMPw ithSVMChangeIPv 6-53059416: ctest-left_ ctest-TestECMPw ithSVMChangeIPv 6-53059416- 47773667"
(gdb) frame 12
#12 query_result_
at controller/
19 controller/
(gdb) print it
$1 = (boost:
(gdb) print jt
$2 = (boost:
This was the actual argument passed to the overloaded fn:
(gdb) frame 14 n<__gnu_ cxx::__ normal_ iterator< query_result_ unit_t* , std::vector< query_result_ unit_t> >, __gnu_cxx: :__normal_ iterator< query_result_ unit_t* , std::vector< query_result_ unit_t> >, std::back_ insert_ iterator< std::vector< query_result_ unit_t> > > (__result=..., __last2=..., __first2={ :variant< ...>) which (4) = boost::uuids::uuid value = (boost: :uuids: :uuid) 1c35cd20- 2703-4855- 8295-b3410c2859 e3} :variant< ...>) which (4) = boost::uuids::uuid value = (boost: :uuids: :uuid) 1c35cd20- 2703-4855- 8295-b3410c2859 e3, (boost: :variant< ...>) which (1) = std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > value = "default- domain: ctest-TestECMPw ithSVMChangeIPv 6-53059416: ctest-left_ ctest-TestECMPw ithSVMChangeIPv 6-53059416- 47773667" } c++/4.8/ bits/stl_ algo.h: 5894
#14 set_intersectio
timestamp = 1490302039966492,
info = std::vector of length 1, capacity 1 = {(boost:
}, __last1=..., __first1={
timestamp = 1490302039966492,
info = std::vector of length 2, capacity 2 = {(boost:
}) at /usr/include/
5894 else if (*__first2 < *__first1)