summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-20 12:27:40 +0200
committerCarl Hetherington <cth@carlh.net>2021-04-21 00:52:07 +0200
commitc370c651eba466f5073384de8b304a2625c64b89 (patch)
treed60eb159f3b22141457fdadb332c19ec025f013b
parentf61acf7791b17d446f8953ca261092d4fb878d37 (diff)
Add some possibly-useful markers for debugging threads from coredumps.
-rw-r--r--src/lib/butler.cc2
-rw-r--r--src/lib/encode_server_finder.cc4
-rw-r--r--src/lib/hints.cc2
-rw-r--r--src/lib/j2k_encoder.cc2
-rw-r--r--src/lib/job.cc2
-rw-r--r--src/lib/job_manager.cc2
-rw-r--r--src/lib/util.cc17
-rw-r--r--src/lib/util.h1
-rw-r--r--src/lib/writer.cc2
-rw-r--r--src/wx/gl_video_view.cc2
10 files changed, 36 insertions, 0 deletions
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<EncodeServerDescription> 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 <class T>
std::list<T>
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);