std: : async в clang 3.0 + libc ++ не работает?

Я только что скомпилировал и установил clang + llvm 3.0 на свой ubuntu 10.04, а также libc ++ из svn. Поскольку статус в libc ++ показывает, что поддержка потоков завершена, я хотел попробовать std :: async. Поэтому я следую примеру Энтони Уильямса в

http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.html

И просто внесите незначительные изменения, чтобы он скомпилировался:

#include 
#include 

int calculate_the_answer_to_LtUaE()
{
  return 42;
}

void do_stuff()
{
  std::cout << "doing stuff" << std::endl;
}

int main()
{
  std::future the_answer=std::async(calculate_the_answer_to_LtUaE);
  do_stuff();
  std::cout<<"The answer to life, the universe and everything is "
    <

И я компилирую с помощью

clang ++ --std = c ++ 0x -stdlib = libc ++ -lpthread async.cpp

Однако он запускается и всегда заканчивается с дамп ядра:

что-то делает Ответ на жизнь, вселенную и все остальное - Прервано (ядро выгружено)

Я проверяю дамп ядра, и он показывает такой стек (на который я не совсем понимаю)

#0  0x00007fd0a1a7ba75 in raise () from /lib/libc.so.6
#1  0x00007fd0a1a7f5c0 in abort () from /lib/libc.so.6
#2  0x00007fd0a22a735b in std::exception_ptr::~exception_ptr (this=) at ../src/exception.cpp:130
#3  0x0000000000404178 in void std::__1::__assoc_state::set_value(int&&) ()
#4  0x00000000004051ae in _ZNSt3__119__async_assoc_stateIiNS_12__async_funcIPFivEJEEEE9__executeEv ()
#5  0x0000000000404e00 in _ZNSt3__114__thread_proxyINS_5tupleIJMNS_19__async_assoc_stateIiNS_12__async_funcIPFivEJEEEEEFvvEPS7_EEEEEPvSC_ ()
#6  0x00007fd0a250f9ca in start_thread () from /lib/libpthread.so.0
#7  0x00007fd0a1b2e70d in clone () from /lib/libc.so.6
#8  0x0000000000000000 in ?? ()

У кого-нибудь есть идея, почему?

6
задан ildjarn 7 December 2011 в 00:08
поделиться