$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Jonathan Wakely (cow_at_[hidden])
Date: 2005-05-06 11:56:17
On Thu, May 05, 2005 at 09:13:07PM +0200, Thorsten Ottosen wrote:
> "Jonathan Wakely" <cow_at_[hidden]> wrote in message 
> | Now I've had time to look at it I've found a bug in libstdc++'s debug
> | mode where std::iterator is unqualified and so not found when
> | vector<bool> is not in std.
> |
> | I'll fix it in GCC a.s.a.p.
> 
> Thanks! :-)
Hi,
I've not found a reduced test case yet, but will apply the fix to GCC
soon.  It seems to be triggered by a "using namespace std;" before
including <vector>.
In the meantime, I also tried to debug this failure:
It looks like a double-delete on a Base object, the second time it comes
to delete it the object's vtable is invalid, so trying to run the
derived dtor causes a segfault.
I see this with GCC4 on both x86_64 Linux and i386 FreeBSD.
I modified ptr_list.cpp to add a static int Base::counter, initialised
to zero, then added this to the ctors:
std::cerr << '+' <<  this << '\t' << ++counter << endl;
and made the dtor non-virtual (to prevent the vtable lookup) and added
this in the dtor body:
std::cerr << '-' <<  this << '\t' << --counter << endl;
This produced:
+0x80f40a0      1
+0x80f4120      2
+0x80f4160      3
+0x80f41a0      4
-0x80f40a0      3
+0x80f40a0      4
-0x80f41a0      3
+0x80f4140      4
+0x80f41a0      5
-0x80f41a0      4
+0x80f41a0      5
+0x80f4220      6
+0x80f4260      7
+0x80f42a0      8
+0x80f42e0      9
+0x80f4320      10
-0x80f40a0      9
-0x80f4160      8
-0x80f4260      7
-0x80f42a0      6
-0x80f42e0      5
-0x80f4320      4
-0x80f40a0      3
Notice how the last address is shown with more '-' than '+'
That was as far as I got last night, I've not had time to debug any
further.
This happens when clear() is called on line 93 of sequence_test_data.hpp
I'll keep looking into it when I get a chance if you don't have any
ideas what's going on.
jon
-- VOTE, v. The instrument and symbol of a free man's power to make a fool of himself and a wreck of his country. - Ambrose Bierce, 'The Devil's Dictionary'