Hi there,

I'm still trying to build an AMQP RPC message flow. I have the request path
working and am now debugging the response path. In doing so, it seems that
the response message is correctly being sent over the expected channel, but
the broker seems to die from an out of memory error. In trying to
understand what's going on, I've got some more details, but not sure yet
what's going on.

This is with Artemis 2.6.2.

In CoreAmqpConverter.convertBody(), my message hits the ServerJMSMessage
branch. The CoreMessage's buffer has ridx 0 and widx 9755, with
endOfBodyPosition = 9218. For some reason, the readerIndex from
message.getInnerMessage().getBodyBuffer().readerIndex() ends up being 4
(it's not clear to me exactly how/why this happens). This seems to be
skipping over a prefix that contains [0, 0, 36, 2]. That data is directly
followed by what I recognize as the actual message contents, with starts
with a 5-byte alphanumeric string. However, when the code then tries to
readNullableSimpleString() from the buffer it seems to read the length of
the buffer to be used from the alpha string, resulting in a buffer length
that ends up going out of bounds. SimpleString.readNullableSimpleString()
then reads another byte from the buffer to check whether it's null (it does
not appear to rewind the reader index if it isn't?). readSimpleString then
reads a length of 1.8 GB and the process dies.

Can someone explain to me what might be going on here?

Kind regards,

Dirkjan

Reply via email to