[BUG] IndexOutOfBoundsException during read from input stream
See original GitHub issueDescribe the bug
Under unknown conditions reading from InputStream, opened on existing blob, causes IndexOutOfBoundsException
in ByteBuffer#checkBounds
.
Exception or Stack Trace
checkBounds:567, Buffer (java.nio)
get:149, HeapByteBuffer (java.nio)
readInternal:329, StorageInputStream (com.azure.storage.common)
read:289, StorageInputStream (com.azure.storage.common)
readFully:24, FileInfoAsSeekable (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
readFully:111, FSDataInputStream (org.apache.hadoop.fs)
readRanges:99, JetbrainsOrcDataReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
readFileData:62, JetbrainsOrcDataReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
readData:151, StripePlanner (org.apache.orc.impl.reader)
readStripe:190, JetbrainsOrcRecordReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
advanceStripe:159, JetbrainsOrcRecordReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
advanceToNextRow:137, JetbrainsOrcRecordReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
<init>:89, JetbrainsOrcRecordReader (org.jetbrains.hdfsplugin.hdfs.localcache.orcsupport)
readBatch:130, ORCContentDownloader (org.jetbrains.hdfsplugin.hdfs.localcache)
writeCsv:43, ORCContentDownloader (org.jetbrains.hdfsplugin.hdfs.localcache)
download:38, ORCContentDownloader (org.jetbrains.hdfsplugin.hdfs.localcache)
compute:86, RfsFileContentManager$downloadFilePart$1 (com.jetbrains.bigdatatools.rfs.localcache)
compute:17, RfsFileContentManager$downloadFilePart$1 (com.jetbrains.bigdatatools.rfs.localcache)
lambda$runProcess$3:179, CoreProgressManager (com.intellij.openapi.progress.impl)
run:-1, 1806785439 (com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$878)
lambda$runProcess$2:163, CoreProgressManager (com.intellij.openapi.progress.impl)
run:-1, 115725296 (com.intellij.openapi.progress.impl.CoreProgressManager$$Lambda$240)
registerIndicatorAndRun:585, CoreProgressManager (com.intellij.openapi.progress.impl)
executeProcessUnderProgress:531, CoreProgressManager (com.intellij.openapi.progress.impl)
executeProcessUnderProgress:59, ProgressManagerImpl (com.intellij.openapi.progress.impl)
runProcess:150, CoreProgressManager (com.intellij.openapi.progress.impl)
runProcess:179, CoreProgressManager (com.intellij.openapi.progress.impl)
downloadFilePart:85, RfsFileContentManager (com.jetbrains.bigdatatools.rfs.localcache)
getOrDownload:64, RfsFileContentManager (com.jetbrains.bigdatatools.rfs.localcache)
getOrDownload$default:62, RfsFileContentManager (com.jetbrains.bigdatatools.rfs.localcache)
getContentFile:50, RfsFileContentManager (com.jetbrains.bigdatatools.rfs.localcache)
getContentFile$default:49, RfsFileContentManager (com.jetbrains.bigdatatools.rfs.localcache)
loadContent:106, GeneralContentTypeViewerBase (com.jetbrains.bigdatatools.rfs.view)
invoke:76, RfsAsyncFileTypeViewer$openViewer$$inlined$let$lambda$1 (com.jetbrains.bigdatatools.rfs.view)
invoke:71, RfsAsyncFileTypeViewer$openViewer$$inlined$let$lambda$1 (com.jetbrains.bigdatatools.rfs.view)
run:17, ThreadUtilsKt$executeOnPooledThread$1 (com.jetbrains.bigdatatools.util)
run:238, ApplicationImpl$1 (com.intellij.openapi.application.impl)
call:511, Executors$RunnableAdapter (java.util.concurrent)
run$$$capture:266, FutureTask (java.util.concurrent)
run:-1, FutureTask (java.util.concurrent)
- Async stack trace
<init>:151, FutureTask (java.util.concurrent)
newTaskFor:87, AbstractExecutorService (java.util.concurrent)
submit:111, AbstractExecutorService (java.util.concurrent)
executeOnPooledThread:220, ApplicationImpl (com.intellij.openapi.application.impl)
executeOnPooledThread:16, ThreadUtilsKt (com.jetbrains.bigdatatools.util)
openViewer:74, RfsAsyncFileTypeViewer (com.jetbrains.bigdatatools.rfs.view)
openViewer:34, FileTypeViewerManager (com.jetbrains.bigdatatools.rfs.view)
openViewer$default:33, FileTypeViewerManager (com.jetbrains.bigdatatools.rfs.view)
showContent:18, ShowFileContentAction$Companion (com.jetbrains.bigdatatools.rfs.projectview.actions)
navigate:15, RfsFileNode (com.jetbrains.bigdatatools.rfs.projectview.nodes)
navigateToSource:119, OpenSourceUtil (com.intellij.util)
navigate:74, OpenSourceUtil (com.intellij.util)
navigate:58, OpenSourceUtil (com.intellij.util)
navigate:51, OpenSourceUtil (com.intellij.util)
openSourcesFrom:19, OpenSourceUtil (com.intellij.util)
onDoubleClick:46, MyDoubleClickListener (com.jetbrains.bigdatatools.rfs.projectview)
onClick:30, DoubleClickListener (com.intellij.ui)
mouseReleased:59, ClickListener$1 (com.intellij.ui)
mouseReleased:290, AWTEventMulticaster (java.awt)
mouseReleased:289, AWTEventMulticaster (java.awt)
mouseReleased:289, AWTEventMulticaster (java.awt)
mouseReleased:289, AWTEventMulticaster (java.awt)
processMouseEvent:6539, Component (java.awt)
processMouseEvent:3324, JComponent (javax.swing)
processMouseEvent:391, Tree (com.intellij.ui.treeStructure)
processMouseEvent:43, DnDAwareTree (com.intellij.ide.dnd.aware)
processEvent:6304, Component (java.awt)
processEvent:2239, Container (java.awt)
dispatchEventImpl:4889, Component (java.awt)
dispatchEventImpl:2297, Container (java.awt)
dispatchEvent:4711, Component (java.awt)
retargetMouseEvent:4904, LightweightDispatcher (java.awt)
processMouseEvent:4535, LightweightDispatcher (java.awt)
dispatchEvent:4476, LightweightDispatcher (java.awt)
dispatchEventImpl:2283, Container (java.awt)
dispatchEventImpl:2746, Window (java.awt)
dispatchEvent:4711, Component (java.awt)
dispatchEventImpl:760, EventQueue (java.awt)
access$500:97, EventQueue (java.awt)
run:709, EventQueue$3 (java.awt)
run:703, EventQueue$3 (java.awt)
doPrivileged:-2, AccessController (java.security)
doIntersectionPrivilege:74, ProtectionDomain$JavaSecurityAccessImpl (java.security)
doIntersectionPrivilege:84, ProtectionDomain$JavaSecurityAccessImpl (java.security)
run:733, EventQueue$4 (java.awt)
run:731, EventQueue$4 (java.awt)
doPrivileged:-2, AccessController (java.security)
doIntersectionPrivilege:74, ProtectionDomain$JavaSecurityAccessImpl (java.security)
dispatchEvent:730, EventQueue (java.awt)
defaultDispatchEvent:908, IdeEventQueue (com.intellij.ide)
dispatchMouseEvent:846, IdeEventQueue (com.intellij.ide)
_dispatchEvent:778, IdeEventQueue (com.intellij.ide)
lambda$dispatchEvent$8:424, IdeEventQueue (com.intellij.ide)
computePrioritized:698, CoreProgressManager (com.intellij.openapi.progress.impl)
dispatchEvent:423, IdeEventQueue (com.intellij.ide)
pumpOneEventForFilters:205, EventDispatchThread (java.awt)
pumpEventsForFilter:116, EventDispatchThread (java.awt)
pumpEventsForHierarchy:105, EventDispatchThread (java.awt)
pumpEvents:101, EventDispatchThread (java.awt)
pumpEvents:93, EventDispatchThread (java.awt)
run:82, EventDispatchThread (java.awt)
To Reproduce I don’t have steps to reproduce, but I can give you any information you need.
Code Snippet Several potentially useful code snippets:
FileInfoAsSeekable#readFully
:
override fun readFully(position: Long, buffer: ByteArray, offset: Int, length: Int) {
fileInfo
.readStream(position)!!
.use { it.read(buffer, offset, length) }
}
where it
is input stream from blob, opened as
FileInfo#readStream
:
client.openInputStream(BlobRange(offset), null)
where client
is BlobClient
.
By specification InputStream#read
should read as much as possible until buffer is full or input stream is ended. But in debugger I can see moment when offset + size > length and at this moment execution fails inside ByteBuffer#get
While readFully
is being called with
offset = 0
buffer = {byte[40182088]@24505}
length = 40182088
position = 31324
At some point it leads to ByteBuffer#get
with
dst = {byte[40182088]@24505}
offset = 37748736
length = 4194304
which is obviously out of bounds (which leads o error). It easily can be seen from stack trace that there is no eny intermediate code between my readFully
method and Azure’s read
method and by spec it should not lead to errors.
Setup (please complete the following information):
- OS: Linux, Mac OS X
- IDE : IntelliJ
- Version of the Library used: 12.6.1
Information Checklist Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report
- Bug Description Added
- Repro Steps Added
- Setup information Added
Issue Analytics
- State:
- Created 3 years ago
- Comments:22 (10 by maintainers)
Awesome! So glad to hear it! I am going to close this issue now. Please let us know if you need any more support.
Fixed for us in latest beta, thanks!