[ https://issues.apache.org/jira/browse/THRIFT-5322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17247309#comment-17247309 ]
Juraci Paixão Kröhling commented on THRIFT-5322: ------------------------------------------------ I'm not quite sure the problem is in the message size: the message itself is under 5k in size, but due to the fact that the message is malformed, the buffer size at that method becomes huge. I still couldn't come up with a valid explanation for it, and I can't check what gets parsed as a result as there's only one field that results in this huge memory usage and I get an EOF instead of getting a call to my handler. The attached source file can be used to reproduce the problem. Some times, the memory consumption in the "after" phase is 400MiB, sometimes it's ~800MiB. > Go compact_protocol allocating unreasonable buffer size > ------------------------------------------------------- > > Key: THRIFT-5322 > URL: https://issues.apache.org/jira/browse/THRIFT-5322 > Project: Thrift > Issue Type: Bug > Components: Go - Library > Affects Versions: 0.13.0 > Reporter: Juraci Paixão Kröhling > Priority: Major > Attachments: main.go > > > I don't yet know all the pieces to this puzzle, and it's quite possible that > the problem is on our side, but we use the Thrift Go library in the Jaeger > Agent and we are seeing a case where the memory consumption for a payload of > 4k bytes to result in a buffer allocation in the compact_protocol.go with > unreasonable sizes. I found buffers of 1.4GiB while debugging the issue. > > This is the code that we are seeing this memory usage: > [https://github.com/apache/thrift/blob/b75e88a33d67ae05ef9b5fa001d2a63a2effe377/lib/go/thrift/compact_protocol.go#L556-L577] > > Here's more information about this, including a reproducer and initial > diagnostics: > [https://github.com/jaegertracing/jaeger/issues/2638#issuecomment-741848201] > > As mentioned above, I'm still getting all the pieces together, but perhaps > you've seen this before or know what might be going on. What I know for sure > at the moment is that this happens on malformed payloads, but I would expect > the library to have an upper limit on the buffer size. -- This message was sent by Atlassian Jira (v8.3.4#803005)