Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: c++: thread, operation not permited  (Прочитано 4989 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kernel ops

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1388
    • Просмотр профиля
Re: c++: thread, operation not permited
« Ответ #15 : 14 Сентября 2013, 22:22:43 »
peregrine,
kupamaan,
скачаю daily, проверю

Пользователь решил продолжить мысль 15 Сентября 2013, 17:49:59:
c live cd:
root@ubuntu:/mnt/shkiper/C++# g++ thread.cpp -pthread -std=c++11 -o thread
root@ubuntu:/mnt/shkiper/C++# ./thread
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)
root@ubuntu:/mnt/shkiper/C++#
« Последнее редактирование: 15 Сентября 2013, 17:49:59 от Kernel ops »
root@shkiper:~$mount -t btrfs /dev/head1 /mnt && ls /mnt | grep brain | xargs -i sh /mnt/{}

Оффлайн Kernel ops

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1388
    • Просмотр профиля
Re: c++: thread, operation not permited
« Ответ #16 : 22 Сентября 2013, 12:12:03 »
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$
root@shkiper:~$mount -t btrfs /dev/head1 /mnt && ls /mnt | grep brain | xargs -i sh /mnt/{}

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7215
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: c++: thread, operation not permited
« Ответ #17 : 22 Сентября 2013, 18:05:03 »
Kernel ops, да что за проклятие на твоей машине?
А какая кодировка файла, особенно переносы строк?
Смотри так:
g++ thread.cpp -lpthread -std=c++11 -o threadили даже так:
g++ thread.cpp -D_REENTRANT -lpthread -std=c++11 -o thread

Оффлайн Kernel ops

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1388
    • Просмотр профиля
Re: c++: thread, operation not permited
« Ответ #18 : 23 Сентября 2013, 12:54:44 »
peregrine,
в обоих случаях та же ошибка, также не линкуется pthread
shkiper@server:~/C++/Thread$ file -i thread.cpp
thread.cpp: text/x-c; charset=us-ascii
shkiper@server:~/C++/Thread$
вроде UTF-8, просто за 256 символ юникода ничего не выходит, поэтому us-ascii
оформил баг
*Kernel ops ушел за бубном

Пользователь решил продолжить мысль 24 Сентября 2013, 01:05:01:
Kernel ops,
ответил разработчик, сказал, что временно нужно компилировать с -Wl,--no-as-needed. просто съедать опции g++ не хочет, нашел как надо:
shkiper@server:~/C++/Thread$ g++ -o thread -Wl,--as-needed -std=c++11 -pthread -Wl,--no-as-needed thread.cpp
shkiper@server:~/C++/Thread$ ./thread
1307674368000
355687428096000
shkiper@server:~/C++/Thread$
видимо, это опции линковщика. пойду разбираться, что они делают

Пользователь решил продолжить мысль 24 Сентября 2013, 01:23:14:
shkiper@server:~/C++/Thread$ g++ -o thread -std=c++11 -pthread -Wl,--no-as-needed thread.cpp
shkiper@server:~/C++/Thread$ ./thread
1307674368000
355687428096000
shkiper@server:~/C++/Thread$ g++ -o thread -std=c++11 -pthread -Wl,--as-needed thread.cpp
shkiper@server:~/C++/Thread$ ./thread
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Аварийный останов (сделан дамп памяти)
shkiper@server:~/C++/Thread$
нашел статью, там описано, что as-needed "по-умному" отсеивает библиотеки, которые не будут использоваться в программе. видимо, g++ стоял перед выбором "залинковать pthread, но as-needed говорит, что не надо. юзер тупой, лучше не буду линковать". а no-as-needed убирает "юзер тупой" и дает пользователю возможность залинковать еще что-то. -Wl, наверное, передает опции линковщику.
в общем, ждем фикса ;)
« Последнее редактирование: 24 Сентября 2013, 01:23:14 от Kernel ops »
root@shkiper:~$mount -t btrfs /dev/head1 /mnt && ls /mnt | grep brain | xargs -i sh /mnt/{}

 

Страница сгенерирована за 0.032 секунд. Запросов: 27.