KOOM icon indicating copy to clipboard operation
KOOM copied to clipboard

2.0.0版本 使用koom-fill-crop 恢复strip的hprof文件失败

Open dianchewolf opened this issue 3 years ago • 7 comments

demo工程 最新的master代码 机型 小米10s 系统 Android 11 miui 12.5

使得demo工程 test hprof strip 导出 test.hprof, 使用koom-fill-crop 恢复失败

java.lang.IndexOutOfBoundsException at java.nio.Buffer.checkBounds(Unknown Source) at java.nio.DirectByteBuffer.get(Unknown Source) at com.android.tools.perflib.heap.io.MemoryMappedFileBuffer.setPosition(MemoryMappedFileBuffer.java:315) at com.android.tools.perflib.heap.HprofParser.skipFully(HprofParser.java:771) at com.android.tools.perflib.heap.HprofParser.parse(HprofParser.java:267) at com.android.tools.perflib.heap.Main.main(Main.java:36) java.lang.IllegalArgumentException: Class not found: java.lang.String at com.android.tools.perflib.heap.Queries.instancesOf(Queries.java:156) at com.android.tools.perflib.heap.Main.testFindInstancesOf(Main.java:86) at com.android.tools.perflib.heap.Main.main(Main.java:40)

导出的文件 https://github.com/dianchewolf/filetemp/blob/main/test.hprof

dianchewolf avatar Dec 03 '21 04:12 dianchewolf

是必现吗,有没有更多demo app报错日志?

AndroidInternal avatar Apr 05 '22 12:04 AndroidInternal

同样的问题,我开始以为是我 jdk 版本问题,后来发现把 hprof 跟 koom-fill-crop.jar 换成全路径就 ok了,很迷

t894924815 avatar Sep 06 '22 11:09 t894924815

同样的问题,我开始以为是我 jdk 版本问题,后来发现把 hprof 跟 koom-fill-crop.jar 换成全路径就 ok了,很迷

他这个问题和路径没有关系,是hprof存储内容非法了,你有必现复现路径吗?

AndroidInternal avatar Sep 07 '22 06:09 AndroidInternal

同样的问题,我开始以为是我 jdk 版本问题,后来发现把 hprof 跟 koom-fill-crop.jar 换成全路径就 ok了,很迷

他这个问题和路径没有关系,是hprof存储内容非法了,你有必现复现路径吗?

搞错了,我那个导出的 hprof 没成功导出,文件本身没内容

t894924815 avatar Sep 07 '22 10:09 t894924815

我有跟你类似的情况,恢复 hprof 文件报错,我试了恢复用命令 adb shell "run-as com.kwai.koom.demo cat 'files/test.hprof'" > ~/temp/test.hprof 导出的文件和用 AS save as 导出的文件都报错,但是这两种方式导出的文件大小居然不一样,报的错误也不一样。 恢复命令导出的文件报错如下: java.nio.BufferUnderflowException at java.nio.DirectByteBuffer.get(DirectByteBuffer.java:270) at com.android.tools.perflib.heap.io.MemoryMappedFileBuffer.setPosition(MemoryMappedFileBuffer.java:315) at com.android.tools.perflib.heap.HprofParser.skipFully(HprofParser.java:771) at com.android.tools.perflib.heap.HprofParser.parse(HprofParser.java:267) at com.android.tools.perflib.heap.Main.main(Main.java:36) java.lang.IllegalArgumentException: Class not found: java.lang.String at com.android.tools.perflib.heap.Queries.instancesOf(Queries.java:156) at com.android.tools.perflib.heap.Main.testFindInstancesOf(Main.java:86) at com.android.tools.perflib.heap.Main.main(Main.java:40)

恢复 save as 导出的文件报错如下: java.lang.IllegalArgumentException: loadHeapDump loop with unknown tag 66 with 32852422 bytes possibly remaining at com.android.tools.perflib.heap.HprofParser.loadHeapDump(HprofParser.java:548) at com.android.tools.perflib.heap.HprofParser.parse(HprofParser.java:254) at com.android.tools.perflib.heap.Main.main(Main.java:36) java.lang.IllegalArgumentException: Class not found: java.lang.String at com.android.tools.perflib.heap.Queries.instancesOf(Queries.java:156) at com.android.tools.perflib.heap.Main.testFindInstancesOf(Main.java:86) at com.android.tools.perflib.heap.Main.main(Main.java:40)

mrqinshou avatar Feb 23 '23 11:02 mrqinshou

hprof文件里出现了一个异常的字符串block

  • -- + ----+------------------------------ + | 22 | id | \n$class$classloader | +---+-----+-------------------------------+ 多出了一个\n字符,导致后续的io索引都出现了偏移

zymagic avatar Feb 23 '23 12:02 zymagic

有大佬解决了这个问题吗?

ljzRober avatar Dec 01 '23 08:12 ljzRober