Pages : 1
#1 Le 07/06/2012, à 17:04
- incises
Thread en C++ sous Ubuntu
Bonjour,
je rencontre un problème étrange, sous Ubuntu LTS 12.04 Precise Pangolin, 64 bits.
Je compile - avec g++ 4.6.3 ce petit programme, tiré du livre d'Antony Williams, C++ Concurrency in Action :
#include <iostream>
#include <thread>
void hello()
{
std::cout<<"Hello Concurrent World\n";
}
int main()
{
std::thread t(hello);
t.join();
}
// listing_1.1.cpp (END)
avec une commande comme :
g++ -g -Wall -pedantic -std=c++0x -lpthread listing_1.1.cpp
La compilation passe bien, mais à l'exécution j'obtiens :
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Abandon (core dumped)
A noter que sur la même machine, le même programme compilé et exécuté avec une Mageia 2, 64 bits, avec la même version 4.6.3 de gcc, ne pose aucun problème.
Une idée ?
EDIT Ce petit programme est soumis à la Boost Software Licence, version 1.0
Dernière modification par incises (Le 09/06/2012, à 18:21)
Hors ligne
#2 Le 07/06/2012, à 17:13
- incises
Re : Thread en C++ sous Ubuntu
Pour plus de détails, avec gdb on voit que le programme crashe ici :
(gdb) s
std::__shared_ptr<std::thread::_Impl<std::_Bind_result<void, void (*())()> >, (__gnu_cxx::_Lock_policy)2u>::__shared_ptr<std::allocator<std::thread::_Impl<std::_Bind_result<void, void (*())()> > >, std::_Bind_result<void, void (*())()> >(std::_Sp_make_shared_tag, const std::allocator<std::thread::_Impl<std::_Bind_result<void, void (*())()> > > &) (this=0x7fffffffe0e0, __tag=..., __a=...)
at /usr/include/c++/4.6/bits/shared_ptr_base.h:992
992 _M_ptr = static_cast<_Tp*>(__p);
(gdb) s
993 __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr);
(gdb) s
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Program received signal SIGABRT, Aborted.
0x00007ffff753d445 in raise () from /lib/x86_64-linux-gnu/libc.so.6
Hors ligne
#3 Le 05/07/2012, à 12:15
- Dominique49
Re : Thread en C++ sous Ubuntu
J'ai encore jamais utilisé cette librairie, mais je m’apprêtais justement à l'utiliser ^^
Je ne suis encore expert dans le domaine, mais l'erreur semble indiquer une erreur interne la classe shared_ptr_base ... Je crois que cela ne viens pas de ton code mais de la façon dont tu compiles, fait attention aux options ...
De toute façon je vais essayé sous peu, alors je te dirais si j'ai réussi où non et comment
Maths spé - Lycée Camille Guérin
Hors ligne
#5 Le 07/07/2012, à 16:15
- incises
Re : Thread en C++ sous Ubuntu
Problème résolu après installation de la version 4.7.1 de GCC, grâce à ce tutoriel remarquable qui explique comment installer la dernière version stable de GCC sur une Ubuntu 12.04 :
Comment compiler la dernière version de GCC sur Ubuntu 12.04
Hors ligne
Pages : 1