测试: 在运行 tcp_shutdown_after_write 测试时, SIGABRT/崩溃是由 tcp4_echo_server 中的 ASSERT 引起的
作者: ptlomholt创建于 2026年3月13日更新于 2026年7月28日
- ** 格式**:Linux Mint 22.3, x86 64
- libuv版本:v1.x最新,1.52.1
运行 cmake 的测试( 通过时没有出错 ) 后, 我注意到在 tcp shutdown after write 测试中, uv run test的 tcp4 echo server 进程出现崩溃 。 通过在调试器下手动运行tcp4 echo server进程(例如:./uv run tests tcp shutdown after write tcp4 echo server',然后运行测试(./tcp shutdown after write shutdown after write')。 坠机指向在tcp4 echo server's`after shutdown()'召回的ASERT:
+run tcp shutdown after write tcp4 echo 服务器
开始程序:/home/ptlomholt/dev/lipuv/ptlomholt/libuv/build/uv run tcp shutdown after write tcp4 echo server
[已启用 libthread db 调试]
使用主机libthread db库 "/lib/x86 64-linux-gnu/libthread db.so.1".
程序收到SIGABRT信号,中止。
./nptl/pthread kill.c:44。
警告:44./nptl/pthread kill.c: 没有这样的文件或目录
+bt 组合键
#0 pthread kill 执行 (no tid=0, signo=6, sheleid=优化出局) 在./nptl/pthread kill.c:44
# 1 pthread kill 内部 (signo=6, 线条- 优化出局) at./nptl/pthread kill.c: 78
#2 GI pthread kill (threadd-Ximposed out >, signo=signo@entry=6) at./nptl/pthread kill.c:89
#3 0x0007ff7c4527e 在 ./ sysdeps/posix/cause.c:26
#4 0x0007ff7c288ff 在 ./stdlib/bort.c:79 的 .GI bort ()中
#5 0x0005555569ce7 在后-shutdown (req=0x555555dc690,状态=-107)在/home/ptlomholt/dev/libuv/ptlomholt/libuv/test/echo-server.c:68
#6 0x0007ff7 f9cdb1 in uv drain (流=0x555565dc590) 在/home/ptlomholt/dev/libuv/ptlomholt/libuv/src/unix/stream.c:656
#7 0x0007ff7 f9e2e3 in uv stream io (loop=0x7ff7 fbbc0 <default loop struct>,w=0x555565dc618,事件=25) 在/home/ptlomholt/dev/libuv/ptlomholt/libuv/src/unix/stream.c:1238
#8 0x0007ff7f8b73d in uv io cb (loop=0x7ff7ffbbc0 <default loop struct>,w=0x555565dc618,事件=25) 在/home/ptlomholt/dev/libuv/ptlomholt/libuv/src/unix/core.c:930
#9 0x0007ff7fa9152 in uv io poll (loop=0x7ff7ffbbc0 <default loop struct>,超时=-1) 在/home/ptlomholt/dev/libuv/ptlomholt/libuv/src/unix/linux.c:15:46
#10 0x0007ff7f8ab8a in uv run (loop=0x7ff7ffbbc0 <default loop struct>,模式=UV RUN DEFAULT) 在/home/ptlomholt/dev/libuv/ptlomholt/libuv/src/unix/core.c:460
#11 0x0005555556b123 在run helper tcp4 echo server () at /home/ptlomholt/dev/libuv/ptlomholt/libuv/test/echo-server.c:393
#12 0x0005555555d032 在 run test part (test=0x555555dc2fd "tcp shutdown after write", part=0x5555565dc316 "tcp4 echo server") 在 /home/ptlomholt/dev/libuv/ptlomholt/libuv/test/runner.c:372 中,在 #:
#13 0x000555556b41e,主机(argc=3,argv=0x555555dc2a0)在/home/ptlomholt/dev/libuv/ptlomholt/libuv/test/run-tests.c:82
+帧 5
#5 0x0005555569ce7 在下沉之后
. . . . . . .内容来源: libuv/libuv