Coverity warning: sessiond: uncaught exception in main
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 13 Apr 2023 18:34:31 +0000 (14:34 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 18 Apr 2023 14:37:00 +0000 (10:37 -0400)
Coverity reports:
1508778 Uncaught exception
If the exception is ever thrown, the program will crash.

In main: A C++ exception is thrown but never caught (CWE-248)

In particular, Coverity reports that pthread_mutex_lock can error-out,
which would cause an lttng::posix_error exception to be thrown.

This isn't particularly likely to happen, but it is nonetheless
preferable to catch exceptions at the top-level and log them before
exiting.

Change-Id: I4f7a52db3c9cd19764e7d12fd62afa60af99dabd
Reported-by: Coverity Scan
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/main.cpp

index 8d59952d6d404b408dba3c77eb0838615790baa4..7f0995a9b0e8388bad9ed4617404825fcf5a06e0 100644 (file)
@@ -1403,7 +1403,7 @@ static void sessiond_uuid_log()
 /*
  * main
  */
-int main(int argc, char **argv)
+static int _main(int argc, char **argv)
 {
        int ret = 0, retval = 0;
        const char *env_app_timeout;
@@ -1975,3 +1975,13 @@ exit_set_signal_handler:
                exit(EXIT_FAILURE);
        }
 }
+
+int main(int argc, char **argv)
+{
+       try {
+               return _main(argc, argv);
+       } catch (const std::exception& e) {
+               ERR_FMT("Unhandled exception caught by main thread: %s", e.what());
+               abort();
+       }
+}
This page took 0.035564 seconds and 4 git commands to generate.