From 0d5070b4a40912a7921e0101461a9c7d61919acd Mon Sep 17 00:00:00 2001 From: HuangLiming Date: Tue, 25 May 2021 03:08:33 -0400 Subject: [PATCH] fix the occasional coredump when the lwip exits Signed-off-by: HuangLiming --- src/api/sockets.c | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/src/api/sockets.c b/src/api/sockets.c index d62e55b..658f762 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -4655,36 +4655,17 @@ void lwip_sock_init(void) return; } -//modify from lwip_close void lwip_exit(void) { - int i, is_tcp; - struct lwip_sock *sock; - - if (memp_pools[MEMP_SYS_MBOX] == NULL) { - return; - } - - for (i = 0; i < sockets_num; i++) { - sock = &sockets[i]; - if (!sock->conn) - continue; -#if LWIP_IGMP - /* drop all possibly joined IGMP memberships */ - lwip_socket_drop_registered_memberships(i); -#endif /* LWIP_IGMP */ - /* - * process is exiting, call netconn_delete to - * close tcp connection, and ignore the return value - */ - is_tcp = NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP; - netconn_delete(sock->conn); - free_socket(sock, is_tcp); - } - - free(sockets); - sockets = NULL; - sockets_num = 0; + /* + * LwIP has the following two parts of memory application, but + * it is unnecessary to release all memory in sequentially, + * which increases complexity. Therefore, we rely on the process + * reclamation mechanism of the system to release memory. + * 1. a sockets table of the process. + * 2. a batch of hugepage memory of each thread. + */ + return; } #endif /* USE_LIBOS */ -- 2.23.0