From: Carl Hetherington Date: Wed, 29 Mar 2023 23:25:25 +0000 (+0200) Subject: Use CURLOPT_NOSIGNAL to fix crashes on update check (#2495). X-Git-Tag: v2.16.51~1 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=0fab37d3b61eb150b3de4a4000b8156e6e53574b Use CURLOPT_NOSIGNAL to fix crashes on update check (#2495). Without this, it's possible to come back from curl_easy_perform in a different thread to the one that it was called from (in the case of an error). As I understand it, this happens because a signal handler is called (from a different thread) and CURLOPT_NOSIGNAL stops this from happening. --- diff --git a/src/lib/update_checker.cc b/src/lib/update_checker.cc index 2c2e23be1..3897b81d8 100644 --- a/src/lib/update_checker.cc +++ b/src/lib/update_checker.cc @@ -66,6 +66,7 @@ UpdateChecker::UpdateChecker () curl_easy_setopt (_curl, CURLOPT_WRITEFUNCTION, write_callback_wrapper); curl_easy_setopt (_curl, CURLOPT_WRITEDATA, this); curl_easy_setopt (_curl, CURLOPT_TIMEOUT, 20); + curl_easy_setopt (_curl, CURLOPT_NOSIGNAL, 1L); string const agent = "dcpomatic/" + string (dcpomatic_version); curl_easy_setopt (_curl, CURLOPT_USERAGENT, agent.c_str ());