Chetan Mehrotra created DIRECTMEMORY-137:
--------------------------------------------
Summary: Concurrent access to MemoryBuffer leads to
BufferUnderflowException
Key: DIRECTMEMORY-137
URL: https://issues.apache.org/jira/browse/DIRECTMEMORY-137
Project: Apache DirectMemory
Issue Type: Bug
Components: core
Affects Versions: 0.2
Reporter: Chetan Mehrotra
When same MemoryBuffer is accessed by multiple thread concurrently then it can
lead to BufferUnderflowException.
MemoryManagerService.retrieve method performs following steps
1. Get MemoryBuffer associated with the Pointer
2. Set its readerIndex to 0
3. Call readBytes. Which for {{NioMemoryBuffer}} invokes following code
@Override
public int readBytes( byte[] bytes, int offset, int length )
{
byteBuffer.get( bytes, offset, length );
readerIndex += length;
return length;
}
So if multiple thread invoke retrieve with same Pointer then readerIndex might
be set to wrong value leading to BufferUnderflowException
Refer to [1] for details
[1] http://markmail.org/thread/yvevhzddta2fyal6
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)