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: Jim Harris <james.r.harris@intel.com> Change-Id: Ic9226f76a4729820f13a2728bea977b6a54f48ee Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15513 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
8203e68e24
commit
1d2700d4c1
@ -964,9 +964,19 @@ reactor_run(void *arg)
|
|||||||
|
|
||||||
TAILQ_FOREACH(lw_thread, &reactor->threads, link) {
|
TAILQ_FOREACH(lw_thread, &reactor->threads, link) {
|
||||||
thread = spdk_thread_get_from_ctx(lw_thread);
|
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_set_thread(thread);
|
||||||
spdk_thread_exit(thread);
|
spdk_thread_exit(thread);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while (!TAILQ_EMPTY(&reactor->threads)) {
|
while (!TAILQ_EMPTY(&reactor->threads)) {
|
||||||
TAILQ_FOREACH_SAFE(lw_thread, &reactor->threads, link, tmp) {
|
TAILQ_FOREACH_SAFE(lw_thread, &reactor->threads, link, tmp) {
|
||||||
|
Loading…
Reference in New Issue
Block a user