Boost logo

Ublas :

From: Peter Schmitteckert (peter_at_[hidden])
Date: 2005-08-23 03:28:50


Dear All,

currentliy I'm fighting with the problem,
that with my code which runs fine on several
platforms and survives valgrinds memcheck
on ia32, I get a

*** glibc detected *** free(): invalid pointer: 0x101c5308 ***

on a debian PowerPC Linux running on a Power5 smp machine.

I've traced down the problem to a resize of an hermitian double matrix,
with Boost 1_33, using gcc 3.3, 3.4 and 4.0.1,
where the default preserve=true is used.

Note, that the code runs fine under AIX on a Power4+ machine using gcc
3.2, and it runs fine with Boost 1_32 on the same Power5.

The actually error is triggered in

void
deallocate(pointer __p, size_type __n)
{ _Alloc::deallocate(__p, __n * sizeof(_Tp)); }

with

#1 0x10041e10 in ~unbounded_array (this=0xffffbfc4) at storage.hpp:104
Boost/boost_1_33_0/boost/numeric/ublas/storage.hpp:104:3579:beg:0x10041e10
#0 std::allocator<double>::deallocate (this=0xffffbfc4, __p=0x101c5008,
__n=21) at stl_alloc.h:683 /usr/include/c++/3.3/bits/stl_alloc.h:683:22433:beg:0x10041ef0
(gdb) step
*** glibc detected *** corrupted double-linked list: 0x101c50b0 ***

Since remote debugging is a bit painful I'd like to ask,
wether one has already experienced such a problem.

Best wishes,
Peter

_______________________________________

Dr. Peter Schmitteckert
TKM / CFN University of Karlsruhe
++49 721 608 3363