Comment 4 for bug 1675598

Revision history for this message
Arvind (arvindv) wrote :

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)