vapor/vapor

Crash likely from changes in #2922

grahamburgsma opened this issue · 2 comments

Describe the bug

Since updating to 4.83.2 I've been getting random crashes in production. I've attached a stack trace below, it appears to come from the changes in PR #2922 (line 5 in stack trace).

To Reproduce

Unsure - appears random, but could be related to random bot requests. The request right before this crash was to GET /.env which seems very bot like.

Environment

  • Vapor Framework version: 4.84.1
  • OS version: Docker swift:5.9-jammy
*** Program crashed: System trap at 0x0000aaaace338354 ***
Thread 1 "NIO-ELT-0-#0" crashed:
 0 [inlined] [system]      0x0000aaaace338354 specialized CircularBuffer.removeFirst() in Run at /build/<compiler-generated>
 1                         0x0000aaaace338354 HTTPResponseCompressor.compressionAlgorithm() + 600 in Run at /build/.build/checkouts/swift-nio-extras/Sources/NIOHTTPCompression/HTTPResponseCompressor.swift:163:41
 2 [ra]                    0x0000aaaace337d24 HTTPResponseCompressor.write(context:data:promise:) + 307 in Run at /build/.build/checkouts/swift-nio-extras/Sources/NIOHTTPCompression/HTTPResponseCompressor.swift:121:35
 3 [ra]                    0x0000aaaace1eebc8 ChannelHandlerContext.invokeWrite(_:promise:) + 63 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1782:29
 4 [ra]                    0x0000aaaace1f0e30 ChannelHandlerContext.write(_:promise:) + 55 in Run
 5 [ra]                    0x0000aaaace96f1bc HTTP1ServerErrorHandler.makeHTTPParserErrorResponse(context:error:) + 683 in Run at /build/.build/checkouts/vapor/Sources/Vapor/HTTP/Server/HTTPServer.swift:499:21
 6 [ra] [inlined]          0x0000aaaace96f530 HTTP1ServerErrorHandler.errorCaught(context:error:) in Run at /build/.build/checkouts/vapor/Sources/Vapor/HTTP/Server/HTTPServer.swift:478:18
 7 [ra] [thunk]            0x0000aaaace96f530 protocol witness for _ChannelInboundHandler.errorCaught(context:error:) in conformance HTTP1ServerErrorHandler + 95 in Run at /build/<compiler-generated>:476:10
 8 [ra]                    0x0000aaaace1ef1d4 ChannelHandlerContext.invokeErrorCaught(_:) + 51 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1732:28
 9 [ra] [inlined]          0x0000aaaace1e1f1c ChannelHandlerContext.fireErrorCaught(_:) in Run at .build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1532:20
10 [ra]                    0x0000aaaace1e1f1c _ChannelInboundHandler.errorCaught(context:error:) + 39 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelHandler.swift:308:17
11 [ra]                    0x0000aaaace1ef1d4 ChannelHandlerContext.invokeErrorCaught(_:) + 51 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1732:28
12 [ra]                    0x0000aaaace1ec33c ChannelHandlerContext.fireErrorCaught(_:) + 39 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1532:20
13 [ra] [system]           0x0000aaaace2836a4 HTTPServerPipelineHandler.errorCaught(context:error:) + 243 in Run at /build/.build/checkouts/swift-nio/Sources/NIOHTTP1/HTTPServerPipelineHandler.swift
14 [ra]                    0x0000aaaace1ef1d4 ChannelHandlerContext.invokeErrorCaught(_:) + 51 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1732:28
15 [ra] [inlined]          0x0000aaaace1fc518 ChannelHandlerContext.fireErrorCaught(_:) in Run at .build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1532:20
16 [ra]                    0x0000aaaace1fc518 ByteToMessageHandler.channelRead(context:data:) + 283 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:674:21
17 [ra]                    0x0000aaaace1ef04c ChannelHandlerContext.invokeChannelRead(_:) + 51 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1702:28
18 [ra]                    0x0000aaaace1ef070 ChannelHandlerContext.invokeChannelRead(_:) + 87 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1704:24
19 [ra] [inlined]          0x0000aaaace1efea8 ChannelPipeline.fireChannelRead0(_:) in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:897:29
20 [ra]                    0x0000aaaace1efea8 ChannelPipeline.SynchronousOperations.fireChannelRead(_:) + 47 in Run at /build/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1162:28
21 [ra]                    0x0000aaaace346680 BaseStreamSocketChannel.readFromSocket() + 679 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/BaseStreamSocketChannel.swift:133:50
22 [ra]                    0x0000aaaace38bc10 specialized BaseSocketChannel.readable0() + 43 in Run
23 [ra] [inlined]          0x0000aaaace39271c specialized BaseSocketChannel.readable() in Run at .build/checkouts/swift-nio/Sources/NIOPosix/BaseSocketChannel.swift:1099:14
24 [ra] [inlined] [system] 0x0000aaaace39271c specialized protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> in Run at /build/<compiler-generated>:1096:23
25 [ra]                    0x0000aaaace39271c specialized SelectableEventLoop.handleEvent<A>(_:channel:) + 139 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:389:25
26 [ra] [inlined] [system] 0x0000aaaace38e0d8 specialized SelectableEventLoop.handleEvent<A>(_:channel:) in Run at /build/<compiler-generated>
27 [ra]                    0x0000aaaace38e0d8 closure #2 in closure #2 in SelectableEventLoop.run() + 163 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:464:30
28 [ra] [thunk]            0x0000aaaace395548 partial apply for closure #2 in closure #2 in SelectableEventLoop.run() + 15 in Run at /build/<compiler-generated>
29 [ra]                    0x0000aaaace38f6a8 specialized Selector.whenReady0(strategy:onLoopBegin:_:) + 963 in Run at .build/checkouts/swift-nio/Sources/NIOPosix/SelectorEpoll.swift:252:25
30 [ra] [inlined]          0x0000aaaace38c308 specialized Selector.whenReady(strategy:onLoopBegin:_:) in Run at .build/checkouts/swift-nio/Sources/NIOPosix/SelectorGeneric.swift:288:18
31 [ra]                    0x0000aaaace38c308 SelectableEventLoop.run() + 467 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/SelectableEventLoop.swift:456:36
32 [ra] [inlined]          0x0000aaaace36eb8c static MultiThreadedEventLoopGroup.runTheLoop(thread:parentGroup:canEventLoopBeShutdownIndividually:selectorFactory:initializer:_:) in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/MultiThreadedEventLoopGroup.swift:97:22
33 [ra]                    0x0000aaaace36eb8c closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:parentGroup:selectorFactory:initializer:) + 339 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/MultiThreadedEventLoopGroup.swift:118:41
34 [ra] [thunk]            0x0000aaaace371824 partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:parentGroup:selectorFactory:initializer:) + 35 in Run at /build/<compiler-generated>
35 [ra] [thunk]            0x0000aaaace3736c0 thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () + 23 in Run at /build/<compiler-generated>
36 [ra]                    0x0000aaaace3a6438 closure #1 in static ThreadOpsPosix.run(handle:args:detachThread:) + 311 in Run at /build/.build/checkouts/swift-nio/Sources/NIOPosix/ThreadPosix.swift:112:13
37 [ra]                    0x0000ffff98f2d5c8 <unknown> in libc.so.6

This has been addressed by the fix for GHSA-3mwq-h3g6-ffhm.

@grahamburgsma this should be fixed in 4.84.2