Date: Mon, 11 Feb 2019 14:04:38 +0000 From: Banta Plan <bantaplan@outlook.de> To: "freebsd-toolchain@freebsd.org" <freebsd-toolchain@freebsd.org> Subject: AW: Problem with mutex.lock() Message-ID: <VI1PR02MB467184217B4C8A23BA5EE037D7640@VI1PR02MB4671.eurprd02.prod.outlook.com>
next in thread | raw e-mail | index | archive | help
I think you can reduce the problem to: ## int main() { std::mutex m; m.lock(); m.lock(); return 0; } ## This should deadlock. But this will crash the program. ________________________________ Von: Banta Plan Gesendet: Montag, 11. Februar 2019 12:09 An: freebsd-toolchain@freebsd.org Betreff: Problem with mutex.lock() I compiled this program and it crashes if executed. Compiled with: FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) = (based on LLVM 6.0.1) ## CMakeLists.txt cmake_minimum_required(VERSION 3.13) project(mainP) set(CMAKE_CXX_STANDARD 17) add_executable(mainP main.cpp) find_package(Threads) target_link_libraries(mainP ${CMAKE_THREAD_LIBS_INIT}) ## main.cpp #include <iostream> #include <thread> #include <mutex> #include <chrono> #include <functional> int main() { using namespace std::chrono_literals; std::mutex m; m.lock(); std::thread([&] { std::cout << "Before sleepFor" << std::endl; std::this_thread::sleep_for(2s); std::cout << "Before unlock" << std::endl; m.unlock(); std::cout << "After unlock" << std::endl; }).detach(); std::cout << "Before lock2" << std::endl; m.lock(); std::cout << "After lock2" << std::endl; return 0; } ## This program compiles and runs under MacOS (Clang Version: Apple LLVM versi= on 10.0.0 (clang-1000.11.45.5)) and manjaro arm64 with gcc (GCC) 8.2.1 20180831
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?VI1PR02MB467184217B4C8A23BA5EE037D7640>