Skip to content

Received SIGPIPE interrupt on exiting NIOAsyncChannel.executeThenClose #3479

@adam-fowler

Description

@adam-fowler

Expected behavior

Not to crash with SIGPIPE

Actual behavior

While inside the closure run from NIOAsyncChannel.executeThenClose if the other side closes the connection and we then write a couple of packets and exit the closure we can get a crash writing to the socket. As far as I can tell NIOAsyncChannelHandlerWriterDelegate.didYield(_:) is called before the closure exits, but NIOAsyncChannelHandlerWriterDelegate._didYield(_:) is called later.

I found this while testing hummingbird-websocket. I have a test to verify that the connection is closed if a ping doesn't receive a pong in time. In the test I have a client that doesn't process any incoming frames for a long enough time such that the server assumes the client is hung and sends a connectionClose packet and then immediately closes the connection. Once the client starts processing frames it responds to the ping and the connection close by sending a pong and connection close and then immediately exits. Not always but quite regularly the client will receive a SIGPIPE interrupt with this call stack.

writev (Unknown Source:0)
closure #1 in static Posix.writev(descriptor:iovecs:) (.build/checkouts/swift-nio/Sources/NIOPosix/System.swift:727)
partial apply for closure #1 in static Posix.writev(descriptor:iovecs:) (Unknown Source:0)
syscall<τ_0_0>(blocking:where:_:) (.build/checkouts/swift-nio/Sources/NIOPosix/System.swift:312)
static Posix.writev(descriptor:iovecs:) (.build/checkouts/swift-nio/Sources/NIOPosix/System.swift:726)
static NIOBSDSocket.writev(socket:iovecs:) (.build/checkouts/swift-nio/Sources/NIOPosix/BSDSocketAPIPosix.swift:137)
closure #1 in Socket.writev(iovecs:) (.build/checkouts/swift-nio/Sources/NIOPosix/Socket.swift:179)
partial apply for closure #1 in Socket.writev(iovecs:) (Unknown Source:0)
BaseSocket.withUnsafeHandle<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/BaseSocket.swift:387)
Socket.writev(iovecs:) (.build/checkouts/swift-nio/Sources/NIOPosix/Socket.swift:178)
protocol witness for SocketProtocol.writev(iovecs:) in conformance Socket (Unknown Source:0)
closure #2 in BaseStreamSocketChannel.writeToSocket() (.build/checkouts/swift-nio/Sources/NIOPosix/BaseStreamSocketChannel.swift:175)
partial apply for closure #2 in BaseStreamSocketChannel.writeToSocket() (Unknown Source:0)
closure #2 in closure #1 in PendingStreamWritesManager.triggerAppropriateWriteOperations(scalarBufferWriteOperation:vectorBufferWriteOperation:scalarFileWriteOperation:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:408)
partial apply for closure #2 in closure #1 in PendingStreamWritesManager.triggerAppropriateWriteOperations(scalarBufferWriteOperation:vectorBufferWriteOperation:scalarFileWriteOperation:) (Unknown Source:0)
closure #1 in PendingStreamWritesManager.triggerVectorBufferWrite(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:494)
partial apply for closure #1 in PendingStreamWritesManager.triggerVectorBufferWrite(_:) (Unknown Source:0)
closure #1 in doPendingWriteVectorOperation(pending:bufferPool:_:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:89)
partial apply for closure #1 in doPendingWriteVectorOperation(pending:bufferPool:_:) (Unknown Source:0)
closure #1 in PooledBuffer.withUnsafePointers<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/Pool.swift:80)
partial apply for closure #1 in PooledBuffer.withUnsafePointers<τ_0_0>(_:) (Unknown Source:0)
closure #1 in PooledBuffer.BackingStorage.withUnsafeMutableTypedPointers<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/Pool.swift:212)
partial apply for closure #1 in PooledBuffer.BackingStorage.withUnsafeMutableTypedPointers<τ_0_0>(_:) (Unknown Source:0)
ManagedBuffer<>.withUnsafeMutablePointers<τ_0_0, τ_0_1>(_:) (Unknown Source:0)
PooledBuffer.BackingStorage.withUnsafeMutableTypedPointers<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/Pool.swift:196)
PooledBuffer.withUnsafePointers<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/Pool.swift:79)
doPendingWriteVectorOperation(pending:bufferPool:_:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:49)
PendingStreamWritesManager.triggerVectorBufferWrite(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:491)
closure #1 in PendingStreamWritesManager.triggerAppropriateWriteOperations(scalarBufferWriteOperation:vectorBufferWriteOperation:scalarFileWriteOperation:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:408)
partial apply for closure #1 in PendingStreamWritesManager.triggerAppropriateWriteOperations(scalarBufferWriteOperation:vectorBufferWriteOperation:scalarFileWriteOperation:) (Unknown Source:0)
PendingWritesManager.triggerWriteOperations(triggerOneWriteOperation:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:663)
PendingStreamWritesManager.triggerAppropriateWriteOperations(scalarBufferWriteOperation:vectorBufferWriteOperation:scalarFileWriteOperation:) (.build/checkouts/swift-nio/Sources/NIOPosix/PendingWritesManager.swift:403)
BaseStreamSocketChannel.writeToSocket() (.build/checkouts/swift-nio/Sources/NIOPosix/BaseStreamSocketChannel.swift:164)
BaseSocketChannel.flushNow() (.build/checkouts/swift-nio/Sources/NIOPosix/BaseSocketChannel.swift:568)
BaseSocketChannel.flush0() (.build/checkouts/swift-nio/Sources/NIOPosix/BaseSocketChannel.swift:780)
protocol witness for ChannelCore.flush0() in conformance BaseSocketChannel<τ_0_0> (Unknown Source:0)
HeadChannelHandler.flush(context:) (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1698)
protocol witness for _ChannelOutboundHandler.flush(context:) in conformance HeadChannelHandler (Unknown Source:0)
ChannelHandlerContext.invokeFlush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:2185)
ChannelHandlerContext.flush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1980)
_ChannelOutboundHandler.flush(context:) (.build/checkouts/swift-nio/Sources/NIOCore/ChannelHandler.swift:253)
protocol witness for _ChannelOutboundHandler.flush(context:) in conformance WebSocketFrameEncoder (Unknown Source:0)
ChannelHandlerContext.invokeFlush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:2185)
ChannelHandlerContext.invokeFlush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:2187)
ChannelHandlerContext.invokeFlush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:2187)
ChannelHandlerContext.flush() (.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1980)
NIOAsyncChannelHandler._doOutboundWrite(context:write:) (.build/checkouts/swift-nio/Sources/NIOCore/AsyncChannel/AsyncChannelHandler.swift:489)
NIOAsyncChannelHandler._didYield(element:) (.build/checkouts/swift-nio/Sources/NIOCore/AsyncChannel/AsyncChannelHandler.swift:463)
implicit closure #4 in implicit closure #3 in NIOAsyncChannelHandlerWriterDelegate.init<τ_0_0, τ_0_1>(handler:) (Unknown Source:0)
closure #1 in NIOAsyncChannelHandlerWriterDelegate.didYield(_:) (.build/checkouts/swift-nio/Sources/NIOCore/AsyncChannel/AsyncChannelHandler.swift:413)
closure #1 in SelectableEventLoop.run(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:616)
partial apply for closure #1 in SelectableEventLoop.run(_:) (Unknown Source:0)
withAutoReleasePool<τ_0_0>(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:47)
SelectableEventLoop.run(_:) (.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:613)
SelectableEventLoop.runOneLoopTick(selfIdentifier:) (.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:807)
SelectableEventLoop.run() (.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:921)
static MultiThreadedEventLoopGroup.runTheLoop(thread:uniqueID:parentGroup:canEventLoopBeShutdownIndividually:selectorFactory:initializer:metricsDelegate:_:) (.build/checkouts/swift-nio/Sources/NIOPosix/MultiThreadedEventLoopGroup.swift:115)
closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:uniqueID:parentGroup:selectorFactory:initializer:metricsDelegate:) (.build/checkouts/swift-nio/Sources/NIOPosix/MultiThreadedEventLoopGroup.swift:137)
partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:uniqueID:parentGroup:selectorFactory:initializer:metricsDelegate:) (Unknown Source:0)
thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () (Unknown Source:0)

Steps to reproduce

If you run testAutoPing from the hummingbird-websocket tests. The test runs both a server and a client. It appears this test only fails on Linux

If possible, minimal yet complete reproducer code (or URL to code)

Sorry haven't been able to write a minimal reproducer.

But the series of actions that cause this seems to be, have remote close the connection, send two packets on client, exit NIOAsyncChannel.executeThenClose

SwiftNIO version/commit hash

v2.29.2

System & version information

NIO diagnose (905df2e2e25a30cc0d1be9313129e76d82801c4d .build/checkouts/swift-nio/scripts/nio-diagnose)

System information

System versions

Command: composite_command_system_versions_linux

Wed Jan 14 05:23:04 PM UTC 2026
Linux becfe55924d3 5.15.49-linuxkit-pr #1 SMP PREEMPT Thu May 25 07:27:39 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
Swift version 6.2 (swift-6.2-RELEASE)
Target: aarch64-unknown-linux-gnu
uid=1001(vscode) gid=1001(vscode) groups=1001(vscode)

TCP connections

Command: netstat --tcp -peona

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name     Timer
tcp        0      0 127.0.0.1:35815         0.0.0.0:*               LISTEN      1001       1400567    44595/hummingbird-w  off (0.00/0/0)
tcp        0      0 127.0.0.1:35253         0.0.0.0:*               LISTEN      1001       1113312    233/node             off (0.00/0/0)
tcp        0      0 127.0.0.1:35253         127.0.0.1:44362         ESTABLISHED 1001       1114385    233/node             off (0.00/0/0)
tcp        0      0 127.0.0.1:35253         127.0.0.1:44372         ESTABLISHED 1001       1112467    323/node             off (0.00/0/0)
tcp        0      0 127.0.0.1:35815         127.0.0.1:41256         ESTABLISHED 1001       1400568    44595/hummingbird-w  off (0.00/0/0)
tcp        0      0 127.0.0.1:41256         127.0.0.1:35815         ESTABLISHED 1001       1403027    44595/hummingbird-w  off (0.00/0/0)
tcp        0      0 172.17.0.2:45948        20.26.156.215:443       TIME_WAIT   0          0          -                    timewait (33.47/0/0)
tcp        0      0 127.0.0.1:44372         127.0.0.1:35253         ESTABLISHED 1001       1114426    282/node             off (0.00/0/0)
tcp        0      0 127.0.0.1:44362         127.0.0.1:35253         ESTABLISHED 1001       1114384    265/node             off (0.00/0/0)

UDP

Command: netstat --udp -peona

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name     Timer

Unix Domain Sockets

Command: netstat --protocol=unix -peona

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     1115366  323/node             /tmp/vscode-git-6fc698363c.sock
unix  2      [ ACC ]     STREAM     LISTENING     1112471  323/node             /tmp/vscode-ipc-68d64989-4e11-4ae4-b073-ab7fd92f97b8.sock
unix  2      [ ACC ]     STREAM     LISTENING     1113280  195/node             /tmp/vscode-remote-containers-ipc-9be10421-3ee5-49b0-a59b-e6bcd604
76f8.sock
unix  2      [ ACC ]     STREAM     LISTENING     1113281  195/node             /tmp/vscode-ssh-auth-9be10421-3ee5-49b0-a59b-e6bcd60476f8.sock
unix  2      [ ACC ]     STREAM     LISTENING     1399519  233/node             /tmp/vscode-ipc-fa9be874-7bc1-4a19-b125-b0324d5106f6.sock
unix  2      [ ACC ]     STREAM     LISTENING     1403811  233/node             /tmp/vscode-ipc-62f6e8f5-ca31-43a0-a392-cc853e8d5d64.sock
unix  3      [ ]         STREAM     CONNECTED     1118347  323/node             
unix  3      [ ]         STREAM     CONNECTED     1417515  1734/node            
unix  3      [ ]         STREAM     CONNECTED     1166856  9091/sh              
unix  3      [ ]         STREAM     CONNECTED     1115289  233/node             
unix  3      [ ]         STREAM     CONNECTED     1113343  233/node             
unix  3      [ ]         STREAM     CONNECTED     1161976  323/node             
unix  3      [ ]         STREAM     CONNECTED     1118350  1559/sourcekit-lsp   
unix  3      [ ]         STREAM     CONNECTED     1115364  378/node             
unix  3      [ ]         STREAM     CONNECTED     1166853  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115287  233/node             
unix  3      [ ]         STREAM     CONNECTED     1402980  44548/lldb-dap       
unix  3      [ ]         STREAM     CONNECTED     1115359  323/node             
unix  3      [ ]         STREAM     CONNECTED     1402981  44559/lldb-server    
unix  3      [ ]         STREAM     CONNECTED     1115357  323/node             
unix  3      [ ]         STREAM     CONNECTED     1161975  9227/sh              
unix  3      [ ]         STREAM     CONNECTED     1400427  44548/lldb-dap       
unix  3      [ ]         STREAM     CONNECTED     1166854  9091/sh              
unix  3      [ ]         STREAM     CONNECTED     1417514  45870/sh             
unix  3      [ ]         STREAM     CONNECTED     1161974  323/node             
unix  3      [ ]         STREAM     CONNECTED     1118352  1559/sourcekit-lsp   
unix  3      [ ]         STREAM     CONNECTED     1118348  1559/sourcekit-lsp   
unix  3      [ ]         STREAM     CONNECTED     1166857  323/node             
unix  3      [ ]         STREAM     CONNECTED     1161979  9227/sh              
unix  3      [ ]         STREAM     CONNECTED     1113344  298/node             
unix  3      [ ]         STREAM     CONNECTED     1400426  323/node             
unix  3      [ ]         STREAM     CONNECTED     1166858  9091/sh              
unix  3      [ ]         STREAM     CONNECTED     1115358  378/node             
unix  3      [ ]         STREAM     CONNECTED     1115283  233/node             
unix  3      [ ]         STREAM     CONNECTED     1117032  233/node             
unix  3      [ ]         STREAM     CONNECTED     1118349  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115361  323/node             
unix  3      [ ]         STREAM     CONNECTED     1417513  1734/node            
unix  3      [ ]         STREAM     CONNECTED     1115286  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115290  323/node             
unix  3      [ ]         STREAM     CONNECTED     1417512  45870/sh             
unix  3      [ ]         STREAM     CONNECTED     1166855  323/node             
unix  3      [ ]         STREAM     CONNECTED     1117033  1734/node            
unix  3      [ ]         STREAM     CONNECTED     1161978  323/node             
unix  3      [ ]         STREAM     CONNECTED     1417511  1734/node            
unix  3      [ ]         STREAM     CONNECTED     1161977  9227/sh              
unix  3      [ ]         STREAM     CONNECTED     1400428  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115284  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115360  378/node             
unix  3      [ ]         STREAM     CONNECTED     1118351  323/node             
unix  3      [ ]         STREAM     CONNECTED     1417516  45870/sh             
unix  3      [ ]         STREAM     CONNECTED     1400429  44548/lldb-dap       
unix  3      [ ]         STREAM     CONNECTED     1115285  233/node             
unix  3      [ ]         STREAM     CONNECTED     1115288  323/node             
unix  3      [ ]         STREAM     CONNECTED     1115362  378/node             
unix  3      [ ]         STREAM     CONNECTED     1115363  323/node             

System-wide network statistics

Command: netstat -s

Ip:
    Forwarding: 1
    72668 total packets received
    0 forwarded
    0 incoming packets discarded
    72668 incoming packets delivered
    72747 requests sent out
Icmp:
    0 ICMP messages received
    0 input ICMP message failed
    ICMP input histogram:
    0 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
Tcp:
    228 active connection openings
    53 passive connection openings
    0 failed connection attempts
    51 connection resets received
    6 connections established
    72422 segments received
    72489 segments sent out
    12 segments retransmitted
    0 bad segments received
    20 resets sent
Udp:
    246 packets received
    0 packets to unknown port received
    0 packet receive errors
    246 packets sent
    0 receive buffer errors
    0 send buffer errors
UdpLite:
TcpExt:
    117 TCP sockets finished time wait in fast timer
    3742 delayed acks sent
    3 delayed acks further delayed because of locked socket
    Quick ack mode was activated 3 times
    24965 packet headers predicted
    9469 acknowledgments not containing data payload received
    27745 predicted acknowledgments
    TCPLostRetransmit: 3
    TCPTimeouts: 9
    TCPLossProbes: 4
    TCPBacklogCoalesce: 785
    TCPDSACKOldSent: 3
    TCPDSACKRecv: 3
    2 connections reset due to unexpected data
    TCPDSACKIgnoredNoUndo: 3
    TCPRcvCoalesce: 845
    TCPSynRetrans: 9
    TCPOrigDataSent: 43015
    TCPHystartTrainDetect: 2
    TCPHystartTrainCwnd: 69
    TCPKeepAlive: 13
    TCPDelivered: 43086
    TcpTimeoutRehash: 9
    TCPDSACKRecvSegs: 3
IpExt:
    InOctets: 271689177
    OutOctets: 269735551
    InNoECTPkts: 72668

processes

top

Command: bash -c TERM=dumb top -H -n 1

top - 17:23:04 up  6:28,  0 user,  load average: 0.27, 0.15, 0.29
Threads: 135 total,   1 running, 124 sleeping,  10 stopped,   0 zombie
%Cpu(s):  0.0 us,  2.3 sy,  0.0 ni, 97.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7951.4 total,    475.5 free,   4557.7 used,   3211.8 buff/cache    
MiB Swap:   1024.0 total,    708.3 free,    315.7 used.   3393.6 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND   
    1 root      20   0    2380   1596   1496 S   0.0   0.0   0:03.41 sh        
   21 root      20   0    2380    756    680 S   0.0   0.0   0:00.00 sh        
   27 root      20   0    2380    692    616 S   0.0   0.0   0:00.00 sh        
   28 vscode    20   0    2380   1600   1496 S   0.0   0.0   0:00.06 sh        
  106 root      20   0    2380    696    616 S   0.0   0.0   0:00.00 sh        
  158 vscode    20   0    2380    696    616 S   0.0   0.0   0:00.00 sh        
  195 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.13 node      
  203 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 DelayedT+ 
  204 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 node      
  205 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 node      
  206 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 node      
  207 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 node      
  208 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 node      
  209 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 libuv-wo+ 
  210 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 libuv-wo+ 
  211 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 libuv-wo+ 
  212 vscode    20   0  779316  51048  43144 S   0.0   0.6   0:00.00 libuv-wo+ 

ps

Command: ps auxw

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2380  1596 ?        Ss   16:09   0:03 /bin/sh -c echo Container started trap "exit 0" 15  exec "$@" while sleep 1 & wai
t $!; do :; done -
root        21  0.0  0.0   2380   756 ?        Ss   16:09   0:00 /bin/sh -c echo "New container started. Keep-alive process started." ; export VSC
ODE_REMOTE_CONTAINERS_SESSION=e301a587-4624-4175-88a0-1ce599b7c80f1768406935235 ; /bin/sh
root        27  0.0  0.0   2380   692 ?        S    16:09   0:00 /bin/sh
vscode      28  0.0  0.0   2380  1600 ?        Ss   16:09   0:00 /bin/sh
root       106  0.0  0.0   2380   696 ?        Ss   16:09   0:00 /bin/sh
vscode     158  0.0  0.0   2380   696 ?        Ss   16:09   0:00 /bin/sh
vscode     195  0.0  0.6 779316 51048 ?        Sl   16:09   0:00 /home/vscode/.vscode-server/bin/94e8ae2b28cb5cc932b86e1070569c4463565c37/node /tm
p/vscode-remote-containers-server-9be10421-3ee5-49b0-a59b-e6bcd60476f8.js
vscode     222  0.0  0.0   2380   696 ?        Ss   16:09   0:00 sh /home/vscode/.vscode-server/bin/94e8ae2b28cb5cc932b86e1070569c4463565c37/bin/c
ode-server --log debug --force-disable-user-env --server-data-dir /home/vscode/.vscode-server --use-host-proxy --telemetry-level all --accept-serv
er-license-terms --host 127.0.0.1 --port 0 --connection-token-file /home/vscode/.vscode-server/data/Machine/.connection-token-94e8ae2b28cb5cc932b8
6e1070569c4463565c37 --extensions-download-dir /home/vscode/.vscode-server/extensionsCache --start-server --disable-websocket-compression --skip-r
equirements-check
vscode     233  0.2  1.6 11583496 135436 ?     Sl   16:09   0:12 /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/no
de /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/out/server-main.js --log debug --force-disable-user-env --server
-data-dir /home/vscode/.vscode-server --use-host-proxy --telemetry-level all --accept-server-license-terms --host 127.0.0.1 --port 0 --connection-
token-file /home/vscode/.vscode-server/data/Machine/.connection-token-94e8ae2b28cb5cc932b86e1070569c4463565c37 --extensions-download-dir /home/vsc
ode/.vscode-server/extensionsCache --start-server --disable-websocket-compression --skip-requirements-check
vscode     265  0.0  0.8 764324 71736 ?        Ssl  16:09   0:02 /home/vscode/.vscode-server/bin/94e8ae2b28cb5cc932b86e1070569c4463565c37/node -e 
 ????const net = require('net'); ????const fs = require('fs'); ????process.stdin.pause(); ????const client = net.createConnection({ host: '127.0.0
.1', port: 35253 }, () => { ?????console.error('Connection established'); ?????client.pipe(process.stdout); ?????process.stdin.pipe(client); ????}
); ????client.on('close', function (hadError) { ?????console.error(hadError ? 'Remote close with error' : 'Remote close'); ?????process.exit(hadEr
ror ? 1 : 0); ????}); ????client.on('error', function (err) { ?????process.stderr.write(err && (err.stack || err.message) || String(err)); ????});
 ????process.stdin.on('close', function (hadError) { ?????console.error(hadError ? 'Remote stdin close with error' : 'Remote stdin close'); ?????p
rocess.exit(hadError ? 1 : 0); ????}); ????process.on('uncaughtException', function (err) { ?????fs.writeSync(process.stderr.fd, `Uncaught Excepti
on: ${String(err && (err.stack || err.message) || err)}\n`); ????}); ???
vscode     282  0.1  0.7 753972 60328 ?        Ssl  16:09   0:06 /home/vscode/.vscode-server/bin/94e8ae2b28cb5cc932b86e1070569c4463565c37/node -e 
 ????const net = require('net'); ????const fs = require('fs'); ????process.stdin.pause(); ????const client = net.createConnection({ host: '127.0.0
.1', port: 35253 }, () => { ?????console.error('Connection established'); ?????client.pipe(process.stdout); ?????process.stdin.pipe(client); ????}
); ????client.on('close', function (hadError) { ?????console.error(hadError ? 'Remote close with error' : 'Remote close'); ?????process.exit(hadEr
ror ? 1 : 0); ????}); ????client.on('error', function (err) { ?????process.stderr.write(err && (err.stack || err.message) || String(err)); ????});
 ????process.stdin.on('close', function (hadError) { ?????console.error(hadError ? 'Remote stdin close with error' : 'Remote stdin close'); ?????p
rocess.exit(hadError ? 1 : 0); ????}); ????process.on('uncaughtException', function (err) { ?????fs.writeSync(process.stderr.fd, `Uncaught Excepti
on: ${String(err && (err.stack || err.message) || err)}\n`); ????}); ???
vscode     298  0.5  1.6 1002612 131492 ?      Sl   16:09   0:25 /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/no
de /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/out/bootstrap-fork --type=fileWatcher
vscode     323  3.0  5.3 33233104 437368 ?     Sl   16:09   2:15 /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/no
de --dns-result-order=ipv4first /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/out/bootstrap-fork --type=extension
Host --transformURIs --useHostProxy=true
vscode     378  0.0  0.8 759216 72156 ?        Sl   16:09   0:03 /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/no
de /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/extensions/json-language-features/server/dist/node/jsonServerMai
n --node-ipc --clientProcessId=323
vscode    1559  7.2 26.8 3929832 2185816 ?     Sl   16:09   5:19 /usr/bin/sourcekit-lsp
vscode    1734  0.0  1.0 805292 83880 ?        Sl   16:09   0:03 /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/no
de /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4463565c37/out/bootstrap-fork --type=ptyHost --logsPath /home/vscode/.vscod
e-server/data/logs/20260114T160905
vscode    9091  0.0  0.0   2380   696 ?        S    16:20   0:00 /bin/sh -c echo '{}' > /tmp/vscodemkfifo-1768407582141
vscode    9227  0.0  0.0   2380   696 ?        S    16:20   0:00 /bin/sh -c echo '{}' > /tmp/vscodemkfifo-1768407623405
vscode   44372  0.0  0.0   8500  5352 pts/0    Ss   17:16   0:00 /bin/bash --init-file /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86
e1070569c4463565c37/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration-bash.sh
vscode   44548  0.5  6.9 1858932 562584 ?      Sl   17:16   0:02 /usr/bin/lldb-dap
vscode   44559  0.0  0.5 175376 46720 ?        S    17:16   0:00 /usr/bin/lldb-server gdbserver --fd=11 --native-regs --setsid
vscode   44595  0.0  0.4 860584 32880 ?        tl   17:16   0:00 /workspaces/hummingbird-websocket/.build/aarch64-unknown-linux-gnu/debug/hummingb
ird-websocketPackageTests.xctest --testing-library swift-testing --enable-swift-testing --experimental-event-stream-version 0 --event-stream-outpu
t-path /tmp/vscodemkfifo-1768411003837 --experimental-attachments-path /workspaces/hummingbird-websocket/.build/attachments/2026-01-14_17-16-43 --
filter HummingbirdWebSocketTests\.HummingbirdWebSocketTests\/testAutoPing\(\)
vscode   44882  0.0  0.0   8500  5288 pts/2    Ss+  17:17   0:00 /bin/bash --init-file /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86
e1070569c4463565c37/out/vs/workbench/contrib/terminal/common/scripts/shellIntegration-bash.sh
vscode   45870  0.0  0.0   2380   876 ?        S    17:23   0:00 /bin/sh -c "/vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c4
463565c37/out/vs/base/node/cpuUsage.sh" 44372
vscode   45871  0.0  0.0   4032  2768 ?        S    17:23   0:00 /bin/bash /vscode/vscode-server/bin/linux-arm64/94e8ae2b28cb5cc932b86e1070569c446
3565c37/out/vs/base/node/cpuUsage.sh 44372
root     45873  0.0  0.0   2268   764 ?        S    17:23   0:00 sleep 1
vscode   45875  0.0  0.0   2268   764 ?        S    17:23   0:00 sleep 1
vscode   45877  1.9  0.0   7180  3496 pts/0    S+   17:23   0:00 /bin/bash .build/checkouts/swift-nio/scripts/nio-diagnose -o nio-diagnose.md 4459
5
vscode   45908  0.0  0.0  10728  4120 pts/0    R+   17:23   0:00 ps auxw
vscode   45909  0.0  0.0   7180  1984 pts/0    S+   17:23   0:00 /bin/bash .build/checkouts/swift-nio/scripts/nio-diagnose -o nio-diagnose.md 4459
5
vscode   45910  0.0  0.0   5400   776 pts/0    S+   17:23   0:00 cat

ulimits

Command: ulimit -a

real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 31349
max locked memory           (kbytes, -l) 82000
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1048576
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) unlimited
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited

Analysing pid 44595

Open file descriptors (pid 44595)

Command: lsof -Pnp 44595

COMMAND     PID   USER   FD      TYPE  DEVICE SIZE/OFF      NODE NAME
hummingbi 44595 vscode  cwd       DIR   0,139      768  11496500 /workspaces/hummingbird-websocket
hummingbi 44595 vscode  rtd       DIR   0,140     4096   4596972 /
hummingbi 44595 vscode  txt       REG   0,139 97581160 210882433 /workspaces/hummingbird-websocket/.build/aarch64-unknown-linux-gnu/debug/hummingb
ird-websocketPackageTests.xctest
hummingbi 44595 vscode  mem       REG   254,1            1626708 /usr/lib/swift/linux/lib_FoundationICU.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            4589025 /usr/lib/aarch64-linux-gnu/libc.so.6 (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1905619 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1 (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1905707 /usr/lib/aarch64-linux-gnu/libz.so.1.3 (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1905687 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.33 (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            4589031 /usr/lib/aarch64-linux-gnu/libm.so.6 (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626707 /usr/lib/swift/linux/libXCTest.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626706 /usr/lib/swift/linux/libTesting.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626703 /usr/lib/swift/linux/libFoundationInternationalization.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626702 /usr/lib/swift/linux/libFoundationEssentials.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626701 /usr/lib/swift/linux/libFoundation.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626798 /usr/lib/swift/linux/libswiftDispatch.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626715 /usr/lib/swift/linux/libdispatch.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626700 /usr/lib/swift/linux/libBlocksRuntime.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627096 /usr/lib/swift/linux/libswiftGlibc.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627176 /usr/lib/swift/linux/libswiftSynchronization.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627212 /usr/lib/swift/linux/libswift_RegexParser.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627216 /usr/lib/swift/linux/libswift_StringProcessing.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627192 /usr/lib/swift/linux/libswift_Concurrency.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626736 /usr/lib/swift/linux/libswiftCore.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1627164 /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            1626711 /usr/lib/swift/linux/lib_Testing_Foundation.so (path dev=0,140)
hummingbi 44595 vscode  mem       REG   254,1            4589019 /usr/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 (path dev=0,140)
hummingbi 44595 vscode    0r      CHR   136,1      0t0         4 /dev/pts/1
hummingbi 44595 vscode    1w      CHR   136,1      0t0         4 /dev/pts/1
hummingbi 44595 vscode    2w      CHR   136,1      0t0         4 /dev/pts/1
hummingbi 44595 vscode    3u  a_inode    0,13        0     12669 [eventpoll:4,5,19,20,26]
hummingbi 44595 vscode    4u  a_inode    0,13        0     12669 [eventfd:10]
hummingbi 44595 vscode    5u  a_inode    0,13        0     12669 [timerfd]
hummingbi 44595 vscode    6w     FIFO   0,140      0t0   4598104 /tmp/vscodemkfifo-1768411003837
hummingbi 44595 vscode    7u  a_inode    0,13        0     12669 [eventpoll:8,9,23]
hummingbi 44595 vscode    8u  a_inode    0,13        0     12669 [eventfd:30]
hummingbi 44595 vscode    9u  a_inode    0,13        0     12669 [timerfd]
hummingbi 44595 vscode   10u  a_inode    0,13        0     12669 [eventpoll:11,12,21,24]
hummingbi 44595 vscode   11u  a_inode    0,13        0     12669 [eventfd:31]
hummingbi 44595 vscode   12u  a_inode    0,13        0     12669 [timerfd]
hummingbi 44595 vscode   13u  a_inode    0,13        0     12669 [eventpoll:14,15]
hummingbi 44595 vscode   14u  a_inode    0,13        0     12669 [eventfd:32]
hummingbi 44595 vscode   15u  a_inode    0,13        0     12669 [timerfd]
hummingbi 44595 vscode   16u  a_inode    0,13        0     12669 [eventpoll:17,18,22]
hummingbi 44595 vscode   17u  a_inode    0,13        0     12669 [eventfd:33]
hummingbi 44595 vscode   18u  a_inode    0,13        0     12669 [timerfd]
hummingbi 44595 vscode   19u  a_inode    0,13        0     12669 [signalfd]
hummingbi 44595 vscode   20u  a_inode    0,13        0     12669 [signalfd]
hummingbi 44595 vscode   21u     IPv4 1400567      0t0       TCP 127.0.0.1:35815 (LISTEN)
hummingbi 44595 vscode   22u     IPv4 1403027      0t0       TCP 127.0.0.1:41256->127.0.0.1:35815 (ESTABLISHED)
hummingbi 44595 vscode   23u     sock     0,8      0t0   1402199 protocol: TCP
hummingbi 44595 vscode   24u     IPv4 1400568      0t0       TCP 127.0.0.1:35815->127.0.0.1:41256 (ESTABLISHED)
hummingbi 44595 vscode   26u  a_inode    0,13        0     12669 [timerfd]

Command: ls -la /proc/44595/fd

total 0
dr-x------ 2 vscode vscode  0 Jan 14 17:16 .
dr-xr-xr-x 9 vscode vscode  0 Jan 14 17:16 ..
lr-x------ 1 vscode vscode 64 Jan 14 17:16 0 -> /dev/pts/1
l-wx------ 1 vscode vscode 64 Jan 14 17:16 1 -> /dev/pts/1
lrwx------ 1 vscode vscode 64 Jan 14 17:16 10 -> anon_inode:[eventpoll]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 11 -> anon_inode:[eventfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 12 -> anon_inode:[timerfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 13 -> anon_inode:[eventpoll]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 14 -> anon_inode:[eventfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 15 -> anon_inode:[timerfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 16 -> anon_inode:[eventpoll]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 17 -> anon_inode:[eventfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 18 -> anon_inode:[timerfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 19 -> anon_inode:[signalfd]
l-wx------ 1 vscode vscode 64 Jan 14 17:16 2 -> /dev/pts/1
lrwx------ 1 vscode vscode 64 Jan 14 17:16 20 -> anon_inode:[signalfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 21 -> socket:[1400567]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 22 -> socket:[1403027]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 23 -> socket:[1402199]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 24 -> socket:[1400568]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 26 -> anon_inode:[timerfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 3 -> anon_inode:[eventpoll]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 4 -> anon_inode:[eventfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 5 -> anon_inode:[timerfd]
l-wx------ 1 vscode vscode 64 Jan 14 17:16 6 -> /tmp/vscodemkfifo-1768411003837
lrwx------ 1 vscode vscode 64 Jan 14 17:16 7 -> anon_inode:[eventpoll]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 8 -> anon_inode:[eventfd]
lrwx------ 1 vscode vscode 64 Jan 14 17:16 9 -> anon_inode:[timerfd]

Eventing fds state (pid 44595)

Command: composite_command_ls_epoll 44595

epoll fd 10
===========
pos:    0
flags:  02
mnt_id: 14
ino:    12669
tfd:       11 events:       19 data: ffffffff0000000b  pos:0 ino:317d sdev:d
tfd:       12 events:     2019 data: ffffffff0000000c  pos:0 ino:317d sdev:d
tfd:       24 events:     2019 data:               18  pos:0 ino:155ef8 sdev:8
tfd:       21 events:     2019 data: ffffffff00000015  pos:0 ino:155ef7 sdev:8

epoll fd 13
===========
pos:    0
flags:  02
mnt_id: 14
ino:    12669
tfd:       14 events:       19 data: ffffffff0000000e  pos:0 ino:317d sdev:d
tfd:       15 events:     2019 data: ffffffff0000000f  pos:0 ino:317d sdev:d

epoll fd 16
===========
pos:    0
flags:  02
mnt_id: 14
ino:    12669
tfd:       18 events:     2019 data: ffffffff00000012  pos:0 ino:317d sdev:d
tfd:       17 events:       19 data: ffffffff00000011  pos:0 ino:317d sdev:d
tfd:       22 events:     2019 data: ffffffff00000016  pos:0 ino:156893 sdev:8

epoll fd 3
===========
pos:    0
flags:  02000002
mnt_id: 14
ino:    12669
tfd:       26 events: 40000000 data:                4  pos:0 ino:317d sdev:d
tfd:        4 events:     4019 data:                1  pos:0 ino:317d sdev:d
tfd:       20 events:     4019 data:     ffffc0000bb0  pos:0 ino:317d sdev:d
tfd:       19 events:     4019 data:     ffffc0000b70  pos:0 ino:317d sdev:d
tfd:        5 events: 40000019 data:                3  pos:0 ino:317d sdev:d

epoll fd 7
===========
pos:    0
flags:  02
mnt_id: 14
ino:    12669
tfd:        8 events:       19 data: ffffffff00000008  pos:0 ino:317d sdev:d
tfd:        9 events:     2019 data: ffffffff00000009  pos:0 ino:317d sdev:d
tfd:       23 events:       18 data: ffffffff00000017  pos:0 ino:156557 sdev:8

Thread names

Command: grep -H ^ /proc/44595/task/44595/comm /proc/44595/task/44607/comm /proc/44595/task/44608/comm /proc/44595/task/44609/comm /proc/44595/ta sk/44610/comm /proc/44595/task/44611/comm /proc/44595/task/44612/comm /proc/44595/task/44613/comm /proc/44595/task/44614/comm /proc/44595/task/446 15/comm

/proc/44595/task/44595/comm:hummingbird-web
/proc/44595/task/44607/comm:hummingbird-web
/proc/44595/task/44608/comm:hummingbird-web
/proc/44595/task/44609/comm:hummingbird-web
/proc/44595/task/44610/comm:hummingbird-web
/proc/44595/task/44611/comm:hummingbird-web
/proc/44595/task/44612/comm:NIO-SGLTN-1-#1
/proc/44595/task/44613/comm:NIO-SGLTN-1-#2
/proc/44595/task/44614/comm:NIO-SGLTN-1-#3
/proc/44595/task/44615/comm:NIO-SGLTN-1-#4

Syscalls by thread

Command: grep -H ^ /proc/44595/task/44595/syscall /proc/44595/task/44607/syscall /proc/44595/task/44608/syscall /proc/44595/task/44609/syscall /p roc/44595/task/44610/syscall /proc/44595/task/44611/syscall /proc/44595/task/44612/syscall /proc/44595/task/44613/syscall /proc/44595/task/44614/s yscall /proc/44595/task/44615/syscall

grep: /proc/44595/task/44595/syscall: Operation not permitted
grep: /proc/44595/task/44607/syscall: Operation not permitted
grep: /proc/44595/task/44608/syscall: Operation not permitted
grep: /proc/44595/task/44609/syscall: Operation not permitted
grep: /proc/44595/task/44610/syscall: Operation not permitted
grep: /proc/44595/task/44611/syscall: Operation not permitted
grep: /proc/44595/task/44612/syscall: Operation not permitted
grep: /proc/44595/task/44613/syscall: Operation not permitted
grep: /proc/44595/task/44614/syscall: Operation not permitted
grep: /proc/44595/task/44615/syscall: Operation not permitted

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions