Re: [Boost-bugs] [Boost C++ Libraries] #4842: "pure virtual method called; terminate called without an active exception" on shutdown

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #4842: "pure virtual method called; terminate called without an active exception" on shutdown
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-03-19 06:40:47


#4842: "pure virtual method called; terminate called without an active exception"
on shutdown
-------------------------------+--------------------------------------------
  Reporter: eric_niebler | Owner: ramey
      Type: Bugs | Status: reopened
 Milestone: To Be Determined | Component: serialization
   Version: Boost 1.44.0 | Severity: Regression
Resolution: | Keywords: serialization singleton
-------------------------------+--------------------------------------------

Comment (by anonymous):

 I spent a little time looking at this.

 I looked at the stack traces (and log output) from a couple of different
 reports. The traces I see look like:

 ~void_caster
     recurrsive_unregister
         operator<

 Or some variation - all ending with operator<

 operator< compares the dereferenced pointers to extended_type_info.

 I couldn't see any reason why this should occur with void_caster. I'm
 thinking the issue would be with extended_type_info.
 recurrsive_unregister invokes operator< on dereferenced pointers to
 extended_type_info objects.

 I'm concerned that there may be multilple such objects in the map. This
 would occur if one included code in both the DLL and the mainline. There
 is a trap to detect this because I was concerned about just this problem.
 I had to disable this trap because it required more discipline in code
 organization than many could implement. I would be curious to know if
 those who have experienced this problem were to re-enable this trap if it
 would catch this issue.

 This hypothesis would also explain why the situation isn't as common as I
 would expect it to be if were something else.

 This trap is found and explained at basic_serializer_map.cpp line 46. Try
 these test cases with the following:

 a) uncomment the code at line 63 in basic_serializer_map.cp
 b) rebuild the library
 c) rerun the problem program
 d) let me know the results.

 I realize that this is a lot of work. But without this kind of effort,
 it's very difficult to make progress here. I thank all those who have
 invested efforts here and appreciate your patience and help.

 Robert Ramey

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/4842#comment:22>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:06 UTC