Commit 400df299 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki
Browse files

examples/hello_sock: free I/O buffer in main()



Do not depend on start of the application
to free the I/O buffer in closing poller.
Instead do that in main on every exit path.

There is a negative test case with hello_sock,
which shows mem leak when ASAN is enabled.
See test case:
test/iscsi_tgt/sock/sock.sh:126

Direct leak of 1024 byte(s) in 1 object(s) allocated from:
    #0 0x7f48846ba097 in calloc (/usr/lib64/libasan.so.8+0xba097)
    #1 0x408ffe in main /home/vagrant/spdk_repo/spdk/examples/sock/hello_world/hello_sock.c:562
    #2 0x7f488370750f in __libc_start_call_main (/usr/lib64/libc.so.6+0x2750f)

Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ib7dcad385e5c01128cab71d108832a8ac0594709
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20734


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 9718398e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -161,8 +161,6 @@ hello_sock_close_timeout_poll(void *arg)
	struct hello_context_t *ctx = arg;
	SPDK_NOTICELOG("Connection closed\n");

	free(ctx->buf);

	spdk_poller_unregister(&ctx->time_out);
	spdk_poller_unregister(&ctx->poller_in);
	spdk_sock_close(&ctx->sock);
@@ -572,6 +570,7 @@ main(int argc, char **argv)

		rc = spdk_sock_impl_get_opts(hello_context.sock_impl_name, &impl_opts, &len);
		if (rc < 0) {
			free(hello_context.buf);
			exit(rc);
		}

@@ -595,5 +594,6 @@ main(int argc, char **argv)

	/* Gracefully close out all of the SPDK subsystems. */
	spdk_app_fini();
	free(hello_context.buf);
	return rc;
}