它在我的多线程程序中显示:我启动大约 300 个线程来使用 Websocket(libwebsockets(连接游戏服务器,主循环是:步骤 1 创建 WebSocket 的新上下文步骤 2 使用 WebSocket 连接服务器setp 3 使用函数 lws_context_destroy(断开与服务器的连接(销毁上下文,然后返回到步骤 1一段时间后(连接成功约5K次或更多(,我的程序崩溃(100%(,堆栈信息如下:
#1 0x00007f74a5106bd7 in doall_util_fn (lh=0x7f74781b1a20, use_arg=0, func=0x7f74a508ddc0 <def_cleanup_cb>, func_arg=0, arg=0x0) at lhash.c:294
#2 0x00007f74a508dd7c in int_cleanup () at ex_data.c:382
#3 0x00007f74a65ce76c in lws_context_destroy2 () from /usr/local/lib/libwebsockets.so.10
#4 0x00007f74a65cea74 in lws_context_destroy () from /usr/local/lib/libwebsockets.so.10
我是libwebsockets的新手,不知道如何解决这个问题...有人可以给出任何提示吗?感谢
问题已修复。似乎lws_context_destroy((不是线程安全函数,用线程锁锁定它可以解决这个问题:
lock();
lws_context_destroy();
unlock();