Boost C++ Libraries: Ticket #487: extended_type_info crash on global dtors (arm) https://svn.boost.org/trac10/ticket/487 <pre class="wiki">Hello, i'm struggling with boost::serialization lib again ... I am using RC0_1.33 which has fixed some serialization stuff for me (1.33 was totally unusable for me due to that bugs). Now i seem to have encountered another problem... I am using the boost framework in cross platform projects: gcc 3.4.4: cygwin (win32), linux x86, linux arm gcc 4.0.1: cygwin (win32), linux x86, linux arm msvc 7.1: win32 After upgrading to 1.33/RC0 i get crashes on linux "ARM" processor platform (binaries). "pure virtual function call " -&gt; SIGABRT The cross compiler is verified to work fine (3.4.4). After endless hours of debugging (thanks to that gdb/gdbserver 6.3 trash) i tracked it down to a specific serialization problem? Attached is a shortened gdb/server session (target = arm7tdmi)... It only occurs on arm platform (little endian), the same compiler on x86 (gcc 3.4.4) produces valid code. No crashes. Boost 1.32 worked flawlessly on all platforms with same compilers but it doesnt count because serialization has changed much between 1.32 and 1.33 (= could be anything) From what i can see, the "return less_than(rhs); " operation is called on"boost::serialization::extended_type_info" object, resulting in pure virtual function call. I have no clue where to search/begin for error ... i can only debug on target (arm processor bord) with gdbserver which make it a mess (global dtors). I verified the "extended_type_info_typeid.cpp" code is linked in and the function: BOOST_SERIALIZATION_DECL(bool) extended_type_info_typeid_0::less_than(const extended_type_info &amp;rhs) const { return 0 != get_eti().before( static_cast&lt;const extended_type_info_typeid_0 &amp;&gt;(rhs).get_eti() ); } does exist in code. This is the offending snippet: ------------------------------------------------- BOOST_SERIALIZATION_DECL(bool) extended_type_info::operator&lt;(const extended_type_info &amp;rhs) const { int i = type_info_key_cmp(rhs); if(i &lt; 0) return true; if(i &gt; 0) return false; return less_than(rhs); &lt;---- pure virtual function call !!! } ------------------------------------------------- The object instance itself seems ok, though i dont know how to validate vtable stuff because im not gdb expert. What gives? Regards, A. Focht </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/487 Trac 1.4.3 nobody Tue, 04 Oct 2005 10:38:21 GMT <link>https://svn.boost.org/trac10/ticket/487#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/487#comment:1</guid> <description> <pre class="wiki">Logged In: NO Hello, &gt;[ 1307106 ] extended_type_info crash on global dtors (arm) seems current RC1 of 1.33.0 has fixed this issue. Doesnt crash anymore (running dtors on global object destruction). Regards, A. Focht </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>sf-robot</dc:creator> <pubDate>Fri, 04 Nov 2005 03:20:08 GMT</pubDate> <title>status changed https://svn.boost.org/trac10/ticket/487#comment:2 https://svn.boost.org/trac10/ticket/487#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> </ul> <pre class="wiki">Logged In: YES user_id=1312539 This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker). </pre> Ticket