From: Carl Hetherington Date: Tue, 20 Apr 2021 10:27:40 +0000 (+0200) Subject: Add some possibly-useful markers for debugging threads from coredumps. X-Git-Tag: v2.15.141~51 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=c370c651eba466f5073384de8b304a2625c64b89 Add some possibly-useful markers for debugging threads from coredumps. --- diff --git a/src/lib/butler.cc b/src/lib/butler.cc index 37e8c9544..6de5d5790 100644 --- a/src/lib/butler.cc +++ b/src/lib/butler.cc @@ -179,6 +179,8 @@ void Butler::thread () try { + start_of_thread ("Butler"); + while (true) { boost::mutex::scoped_lock lm (_mutex); diff --git a/src/lib/encode_server_finder.cc b/src/lib/encode_server_finder.cc index 396d67623..2fab210c9 100644 --- a/src/lib/encode_server_finder.cc +++ b/src/lib/encode_server_finder.cc @@ -96,6 +96,8 @@ void EncodeServerFinder::search_thread () try { + start_of_thread ("EncodeServerFinder-search"); + boost::system::error_code error; boost::asio::io_service io_service; boost::asio::ip::udp::socket socket (io_service); @@ -168,6 +170,8 @@ catch (...) void EncodeServerFinder::listen_thread () try { + start_of_thread ("EncodeServerFinder-listen"); + using namespace boost::asio::ip; try { diff --git a/src/lib/hints.cc b/src/lib/hints.cc index b23f32238..52debf3ef 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -370,6 +370,8 @@ void Hints::thread () try { + start_of_thread ("Hints"); + auto film = _film.lock (); if (!film) { return; diff --git a/src/lib/j2k_encoder.cc b/src/lib/j2k_encoder.cc index c2553854b..5dee5ca35 100644 --- a/src/lib/j2k_encoder.cc +++ b/src/lib/j2k_encoder.cc @@ -283,6 +283,8 @@ void J2KEncoder::encoder_thread (optional server) try { + start_of_thread ("J2KEncoder"); + if (server) { LOG_TIMING ("start-encoder-thread thread=%1 server=%2", thread_id (), server->host_name ()); } else { diff --git a/src/lib/job.cc b/src/lib/job.cc index b1ff0fb32..b0ca8a737 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -95,6 +95,8 @@ Job::start () void Job::run_wrapper () { + start_of_thread (String::compose("Job-%1", json_name())); + try { run (); diff --git a/src/lib/job_manager.cc b/src/lib/job_manager.cc index 2839bce30..4ed360bed 100644 --- a/src/lib/job_manager.cc +++ b/src/lib/job_manager.cc @@ -153,6 +153,8 @@ JobManager::errors () const void JobManager::scheduler () { + start_of_thread ("JobManager"); + while (true) { boost::mutex::scoped_lock lm (_mutex); diff --git a/src/lib/util.cc b/src/lib/util.cc index d3511e8c7..65bfd4534 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -1176,3 +1176,20 @@ to_upper (string s) return s; } + +/* Set to 1 to print the IDs of some of our threads to stdout on creation */ +#define DCPOMATIC_DEBUG_THREADS 0 + +#if DCPOMATIC_DEBUG_THREADS +void +start_of_thread (string name) +{ + std::cout << "THREAD:" << name << ":" << std::hex << pthread_self() << "\n"; +} +#else +void +start_of_thread (string) +{ + +} +#endif diff --git a/src/lib/util.h b/src/lib/util.h index 7f8106f3c..a6b010e43 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -123,6 +123,7 @@ extern dcp::Size scale_for_display (dcp::Size s, dcp::Size display_container, dc extern dcp::DecryptedKDM decrypt_kdm_with_helpful_error (dcp::EncryptedKDM kdm); extern boost::filesystem::path default_font_file (); extern std::string to_upper (std::string s); +extern void start_of_thread (std::string name); template std::list diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 81b77d5ce..7208402e4 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -393,6 +393,8 @@ void Writer::thread () try { + start_of_thread ("Writer"); + while (true) { boost::mutex::scoped_lock lock (_state_mutex); diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc index 076cb49ec..ad0ff38a7 100644 --- a/src/wx/gl_video_view.cc +++ b/src/wx/gl_video_view.cc @@ -356,6 +356,8 @@ void GLVideoView::thread () try { + start_of_thread ("GLVideoView"); + { boost::mutex::scoped_lock lm (_canvas_mutex);