Prosty test, który działa niepoprawnie pod ubuntu.

gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)

#include <future>
#include <iostream>

int foo()
{
    sleep( 5 );
    return 42;
}

int main()
{
    std::future<int> result = std::async(std::launch::async, foo );
    std::cout << result.get() << std::endl;

    std::cin.get();

    return 0;
}

Wykonanie kończy się przez core dump. Pod gdb na razie widać tyle:

GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2

(gdb) start
Temporary breakpoint 1 at 0x41baad
Starting program: /home/makhzi/Pulpit/workspace/@szkolenia/async-test/async-test 

Temporary breakpoint 1, 0x000000000041baad in main ()
(gdb) s
Single stepping until exit from function main,
which has no line number information.
terminate called after throwing an instance of 'std::system_error'
  what():  

Program received signal SIGABRT, Aborted.
0x00007ffff72d9d05 in raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64	../nptl/sysdeps/unix/sysv/linux/raise.c: Nie ma takiego pliku ani katalogu.
	in ../nptl/sysdeps/unix/sysv/linux/raise.c

(gdb) info stack
#0  0x00007ffff72d9d05 in raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff72ddab6 in abort () at abort.c:92
#2  0x00007ffff7b916dd in __gnu_cxx::__verbose_terminate_handler() ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff7b8f926 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff7b8f953 in std::terminate() ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff7b8fa5e in __cxa_throw ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff7b3a77a in std::__throw_system_error(int) ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x000000000041c6d1 in void std::call_once<std::_Mem_fn<void (std::__future_base::_State::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()()>&, bool&)>, std::__future_base::_State* const, std::reference_wrapper<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()()> >, std::reference_wrapper<bool> >(std::once_flag&, std::_Mem_fn<void (std::__future_base::_State::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()()>&, bool&)>, std::__future_base::_State* const&&, std::reference_wrapper<std::function<std::unique_ptr<std::__futu---Type <return> to continue, or q <return> to quit---info stack
re_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()()> >&&, std::reference_wrapper<bool>&&) ()
#8  0x000000000041c16e in std::__future_base::_State::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()()>, bool) ()
#9  0x0000000000421fc2 in std::__future_base::_Deferred_state<int>::_M_run_deferred() ()
#10 0x000000000041c006 in std::__future_base::_State::wait() ()
#11 0x000000000041d20f in std::__basic_future<int>::_M_get_result() ()
#12 0x000000000041c8dc in std::future<int>::get() ()
#13 0x000000000041bacf in main ()