g++ doesn't compile simple code, using thread header

Bug #1228201 reported by shkiper325
220
This bug affects 47 people
Affects Status Importance Assigned to Milestone
gcc-defaults (Ubuntu)
Fix Released
High
Unassigned

Bug Description

Bug is only for 13.10. I'm learning c++ and I tried to write a simple code using std::thread (code is in attachment). I found info, that the code won't build without -pthread/-lpthread g++ option. I build code with every position of this flags and with std=c++11/std=c++0x, but I've got the same error:
shkiper@server:~/C++$ g++ thread.cpp -pthread -std=c++11 -o thread
shkiper@server:~/C++$ ./thread
terminate called after throwing an instance of 'std::system_error'
  what(): Enable multithreading to use std::thread: Operation not permitted
Аварийный останов (сделан дамп памяти)
shkiper@server:~/C++$
I tryed to build this code on live cd - same error.
It bullds and works on ubuntu <13.10.
I think, g++ doesn't links pthread lib:
shkiper@server:~/C++$ ldd thread
 linux-vdso.so.1 => (0x00007fff4172b000)
 libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff895b72000)
 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff89595c000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff895594000)
 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff895290000)
 /lib64/ld-linux-x86-64.so.2 (0x00007ff895e95000)
shkiper@server:~/C++ ll /usr/lib/x86_64-linux-gnu/ | grep thread
lrwxrwxrwx 1 root root 26 авг. 23 18:27 libfftw3f_threads.so.3 -> libfftw3f_threads.so.3.3.2
-rw-r--r-- 1 root root 26992 дек. 10 2012 libfftw3f_threads.so.3.3.2
lrwxrwxrwx 1 root root 25 дек. 10 2012 libfftw3_threads.so.3 -> libfftw3_threads.so.3.3.2
-rw-r--r-- 1 root root 26992 дек. 10 2012 libfftw3_threads.so.3.3.2
lrwxrwxrwx 1 root root 27 авг. 23 18:27 libgpgme-pthread.so.11 -> libgpgme-pthread.so.11.10.0
-rw-r--r-- 1 root root 207088 июля 30 12:43 libgpgme-pthread.so.11.10.0
lrwxrwxrwx 1 root root 26 сент. 18 16:44 libgthread-2.0.so.0 -> libgthread-2.0.so.0.3793.0
-rw-r--r-- 1 root root 6088 сент. 18 16:45 libgthread-2.0.so.0.3793.0
-rw-r--r-- 1 root root 1801210 авг. 1 02:52 libpthread.a
-rw-r--r-- 1 root root 4756 авг. 1 02:52 libpthread_nonshared.a
-rw-r--r-- 1 root root 252 авг. 1 02:52 libpthread.so
lrwxrwxrwx 1 root root 23 авг. 23 18:27 libssh_threads.so.4 -> libssh_threads.so.4.2.4
-rw-r--r-- 1 root root 6200 мая 3 19:54 libssh_threads.so.4.2.4
lrwxrwxrwx 1 root root 39 авг. 23 18:27 libthread_db.so -> /lib/x86_64-linux-gnu/libthread_db.so.1
lrwxrwxrwx 1 root root 22 февр. 2 2013 libthreadutil.so.6 -> libthreadutil.so.6.0.2
-rw-r--r-- 1 root root 26464 февр. 2 2013 libthreadutil.so.6.0.2
shkiper@server:~/C++$

ProblemType: Bug
DistroRelease: Ubuntu 13.10
Package: g++ 4:4.8.1-2ubuntu2
ProcVersionSignature: Ubuntu 3.11.0-7.14-generic 3.11.1
Uname: Linux 3.11.0-7-generic x86_64
ApportVersion: 2.12.4-0ubuntu1
Architecture: amd64
Date: Fri Sep 20 18:58:19 2013
InstallationDate: Installed on 2013-08-23 (28 days ago)
InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Alpha amd64 (20130822)
MarkForUpload: True
SourcePackage: gcc-defaults
UpgradeStatus: No upgrade log present (probably fresh install)

Tags: amd64 saucy
Revision history for this message
shkiper325 (shkiper325-deactivatedaccount) wrote :
description: updated
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in gcc-defaults (Ubuntu):
status: New → Confirmed
Revision history for this message
shkiper325 (shkiper325-deactivatedaccount) wrote :

code builds using clang:
shkiper@server:~/C++/Thread$ clang++ thread.cpp -o thread -pthread -std=c++11
shkiper@server:~/C++/Thread$ ./thread
1307674368000
355687428096000
shkiper@server:~/C++/Thread$
so, problem is in g++

Revision history for this message
Matthias Klose (doko) wrote :

I agree this behaviour is not desired. For now, you can work around it passing -Wl,--no-as-needed.

Revision history for this message
MeduZa (meduzapat) wrote :

This is fun, but for me the program works fine for few runs then after more coding and recompile, then I start getting this error when executing.
Ubuntu 13.10 g++ 4.8.1

Changed in gcc-defaults (Ubuntu):
importance: Undecided → High
Revision history for this message
Javier (javiersmail) wrote :

Works on trusty.

tags: added: trusty
tags: removed: trusty
Revision history for this message
Matthias Klose (doko) wrote :

closing based on the previous comment.

Changed in gcc-defaults (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Come Raczy (come-raczy-f) wrote :

On trusty the problem is still present when linking against any of the boost library (tried both 1.54.0 or 1.55.0) - the workaround (-Wl,--no-as-needed) still works though. This is what I get using the 'thread.cpp' provided above:

craczy@vb:/tmp$ g++ thread.cpp -pthread -std=c++11 -o thread
craczy@vb:/tmp$ ./thread
1307674368000
355687428096000
craczy@vb:/tmp$ g++ thread.cpp -pthread -std=c++11 -o thread -lboost_filesystem
craczy@vb:/tmp$ ./thread
terminate called after throwing an instance of 'std::system_error'
  what(): Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)
craczy@vb:/tmp$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
craczy@vb:/tmp$

Revision history for this message
Doug Gale (doug16k) wrote :

Static link with `-static` also reproduces the issue, even with `-Wl,--no-as-needed`. Removing `-static` fixed the issue for me.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.