Commit 1d2700d4 authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

event: check that all non-app threads have exited at shutdown



For now, just print a loud warning when this case is
violated.  We will add a hard assertion and cause the app
to exit with error status in a later release.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: Ic9226f76a4729820f13a2728bea977b6a54f48ee
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15513


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
parent 8203e68e
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -964,9 +964,19 @@ reactor_run(void *arg)

	TAILQ_FOREACH(lw_thread, &reactor->threads, link) {
		thread = spdk_thread_get_from_ctx(lw_thread);
		/* All threads should have already had spdk_thread_exit() called on them, except
		 * for the app thread.
		 */
		if (spdk_thread_is_running(thread)) {
			if (thread != spdk_thread_get_app_thread()) {
				SPDK_ERRLOG("spdk_thread_exit() was not called on thread '%s'\n",
					    spdk_thread_get_name(thread));
				SPDK_ERRLOG("This will result in a non-zero exit code in a future release.\n");
			}
			spdk_set_thread(thread);
			spdk_thread_exit(thread);
		}
	}

	while (!TAILQ_EMPTY(&reactor->threads)) {
		TAILQ_FOREACH_SAFE(lw_thread, &reactor->threads, link, tmp) {