Wolfgang, Jon,

Even though the debug
libraries compile just fine now, I have a problem with the optimized ones.
I get the following error:

=====lac==============optimized==MT== block_vector.cc
/Users/jpitt/prog/lib/deal/contrib/boost/include/boost/bind.hpp: In
function ‘boost::_bi::bind_t<R, R (*)(B1, B2, B3), typename
boost::_bi::list_av_3<A1, A2, A3>::type> boost::bind(R (*)(B1, B2, B3), A1,
A2, A3) [with R = void, B1 = std::complex<float>*, B2 =
std::complex<float>*, B3 = const
std::complex<float>&, A1 = boost::arg<1>, A2 = boost::arg<2>, A3 =
std::complex<float>]’:
/Users/jpitt/prog/lib/deal/contrib/boost/include/boost/bind.hpp:109:
internal compiler error: Bus error
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[1]: *** [/Users/jpitt/prog/lib/deal/lib/lac/block_vector.o] Error 1
make: *** [laco] Error 2

As a remark: I could reproduce this error on my Mac (gcc 4.0.1, MacOSX 10.4 (Tiger)). It happens in the Vector<number>::operator = function, and obviously, the Mac gcc compiler has a problem with boost::bind when the template argument is of type std::complex<float>. And the bind we're using because we want to parallelize this function. I've tried some minor changes in the code layout in order to see whether there is an easy fix for this bug, but the problem persisted. It happens with optimization flags -O1 and higher, and only for std::complex<float>.

I attach a small file that can be used for reproducing this error with basic compiler commands like /usr/bin/g++ -O2 -I/Users/martinkronbichler/deal.II/contrib/boost/ include/ bug.cc

I submitted a temporary fix of lac/vector.h for this problem by explicitly implementing the = operator without using bind for complex float, but that is obviously not a good solution.

Best,
Martin

Attachment: bug.cc
Description: Binary data

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to