Boost logo

Boost :

From: Tim Blechmann (tim_at_[hidden])
Date: 2007-09-21 13:26:21


hi all,

my application uses boost::property_map to, well, store properties ... it
basically works fine, however, when compiling the application with
_GLIBCXX_DEBUG, the xml grammar parser complains:

/usr/include/c++/4.2/debug/safe_iterator.h:131:error: attempt to copy-
    construct an iterator from a singular iterator.

Objects involved in the operation:
iterator "this" @ 0x0xbfe46690 {
type =
N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNSt6__norm6vectorIcSaIcEEEEENSt7__debug6vectorIcS7_EEEE
(constant iterator);
  state = singular;
}
iterator "other" @ 0x0xbfe467e0 {
type =
N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPKcNSt6__norm6vectorIcSaIcEEEEENSt7__debug6vectorIcS7_EEEE
(constant iterator);
  state = singular;
}

the backtrace of the problem is:
> 0 Unknown PC=0xffffe410, FP=0xbfe4626c
   1 abort PC=0xb7ddc17c, FP=0xbfe46398 [/lib/i686/cmov/
libc.so.6]
   2 _ZNK11__gnu_debug16_Error_formatter8_M_errorEv PC=0xb773c781,
FP=0xbfe46458 [/usr/lib/libstdc++.so.6]
   3 __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> > >::_Safe_iterator
PC=0xb5f10d59, FP=0xbfe465c8 [/usr/include/c++/4.2/debug/
safe_iterator.h#128]
   4
boost::iterator_adaptor<boost::spirit::position_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> >
>,boost::spirit::file_position_base<std::string>,boost::spirit::nil_t>,__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> > >,const
char,boost::use_default,boost::use_default,boost::use_default>::not-in-
charge iterator_adaptor PC=0xb5f10dbc, FP=0xbfe465e8 [/usr/include/boost/
iterator/iterator_adaptor.hpp#277]
   5
boost::spirit::position_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> >
>,boost::spirit::file_position_base<std::string>,boost::spirit::nil_t>::position_iterator
PC=0xb5f2fa36, FP=0xbfe46618 [/usr/include/boost/spirit/iterator/
position_iterator.hpp#217]
   6
boost::spirit::scanner<boost::spirit::position_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> >
>,boost::spirit::file_position_base<std::string>,boost::spirit::nil_t>,boost::spirit::scanner_policies<boost::spirit::iteration_policy,boost::spirit::match_policy,boost::spirit::action_policy>
>::scanner PC=0xb5f2fafc, FP=0xbfe46648 [/usr/include/boost/spirit/core/
scanner/scanner.hpp#231]
   7
boost::spirit::parse<boost::spirit::position_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<const
char*,std::__norm::vector<char,std::allocator<char> >
>,std::__debug::vector<char,std::allocator<char> >
>,boost::spirit::file_position_base<std::string>,boost::spirit::nil_t>,boost::property_tree::xml_parser::xml_grammar<boost::property_tree::basic_ptree<std::less<std::string>,std::string,boost::property_tree::basic_path<std::string>,std::string,boost::property_tree::translator>
> > PC=0xb5f5d76e, FP=0xbfe46718 [/usr/include/boost/spirit/core/impl/
parser.ipp#27]
   8
_ZN5boost13property_tree10xml_parser17read_xml_internalINS0_11basic_ptreeISt4lessISsESsNS0_10basic_pathISsEESsNS0_10translatorEEEEEvRSt13basic_istreamINT_8key_type10value_typeESt11char_traitsISD_EERSB_iRKSs
PC=0xb5f635fa, FP=0xbfe46948 [/home/tim/workspace/nova/libs/property_tree/
boost/property_tree/detail/xml_parser_read_spirit.hpp#721]
   9
boost::property_tree::xml_parser::read_xml<boost::property_tree::basic_ptree<std::less<std::string>,std::string,boost::property_tree::basic_path<std::string>,std::string,boost::property_tree::translator>
> PC=0xb5f63a58, FP=0xbfe46ab8 [/home/tim/workspace/nova/libs/
property_tree/boost/property_tree/xml_parser.hpp#58]

<snip>

i am not sure, whether this is a property_map or a spirit problem, nor if
it is a problem at all ...

the problem occurred on boost-1.34.1, using the property_map archive from
the vault. although the code works fine, it keeps me from debugging my
application with _GLIBCXX_DEBUG, so it would be great if this could be
fixed ...

btw, boost::property_map from svn doesn't compile against boost-1.34.1 (i
didn't try compiling it against boost-svn, though):

libs/property_tree/boost/property_tree/detail/
xml_parser_read_rapidxml.hpp: In function 'void
boost::property_tree::xml_parser::read_xml_internal
(std::basic_istream<typename Ptree::key_type::value_type,
std::char_traits<typename Ptree::key_type::value_type> >&, Ptree&, int,
const std::string&) [with Ptree =
boost::property_tree::basic_ptree<std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
boost::property_tree::basic_path<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
boost::property_tree::translator>]':
libs/property_tree/boost/property_tree/xml_parser.hpp:60: instantiated
from 'void boost::property_tree::xml_parser::read_xml(const std::string&,
Ptree&, int, const std::locale&) [with Ptree =
boost::property_tree::ptree]'
/home/tim/workspace/nova/source/kernel/environment.cpp:174:
instantiated from here
libs/property_tree/boost/property_tree/detail/
xml_parser_read_rapidxml.hpp:96: error: invalid operands of types
'<unresolved overloaded function type>' and 'const int' to binary
'operator<'
libs/property_tree/boost/property_tree/detail/
xml_parser_read_rapidxml.hpp:98: error: ISO C++ forbids comparison
between pointer and integer
libs/property_tree/boost/property_tree/detail/
xml_parser_read_rapidxml.hpp:98: error: invalid operands of types
'<unresolved overloaded function type>' and 'const int' to binary
'operator<'

thanks in advance, tim

-- 
tim_at_[hidden]    ICQ: 96771783
http://tim.klingt.org
Relying on the government to protect your privacy is like asking a
peeping tom to install your window blinds.
  John Perry Barlow

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk