c4f086b6ed
There could be an outstanding for_each_reactor operation in progress when the application shuts down. If we don't wait for that operation to complete, we'll get a memory leak for its context. So when stopping the reactors, before setting the state to EXITING, do one final for_each_reactor to ensure any outstanding for_each_reactor operations are flushed. Once this final for_each_reactor operation is complete, we can set the state to EXITING safely. Also use a global mutex and flag to ensure no more for_each_reactor operations can start while the final for_each_reactor is in progress. If a new operation is requested, we'll just ignore since the reactors are shutting down anyways. Fixes issue #2206. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I6d86eb3b0c7855e98481ab4164af82e76c009618 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9928 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
||
---|---|---|
.. | ||
app_rpc.c | ||
app.c | ||
log_rpc.c | ||
Makefile | ||
reactor.c | ||
scheduler_static.c | ||
spdk_event.map |