【问题标题】:JpCapWriter crashes JVMJpCapWriter 使 JVM 崩溃
【发布时间】:2012-10-26 14:13:59
【问题描述】:

当我尝试使用 JpCap Writer 将数据包保存到文件时,会导致 JVM 崩溃。

代码:

captor=JpcapCaptor.openDevice(interfaceList[interfaceNumber], 65535, true, 20);
captor.setFilter("ip and tcp",true);


JpcapWriter writer=JpcapWriter.openDumpFile(captor,"write.txt");
for(int i=0;i<10;i++){
    Packet packet=captor.getPacket();
    writer.writePacket(packet);
  }
writer.close();

崩溃信息:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f283105953a, pid=3060, tid=139810797537024
#
# JRE version: 6.0_24-b24
# Java VM: OpenJDK 64-Bit Server VM (20.0-b12 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.11.4
# Distribution: Ubuntu 12.04 LTS, package 6b24-1.11.4-1ubuntu0.12.04.1
# Problematic frame:
# v  ~BufferBlob::jni_fast_GetLongField
#
# An error report file with more information is saved as:
# /root/workspace/Sniff/hs_err_pid3060.log
#
# If you would like to submit a bug report, please include
# instructions how to reproduce the bug and visit:
#   https://bugs.launchpad.net/ubuntu/+source/openjdk-6/
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

知道如何解决吗?或者任何其他以 TCPDump 格式保存数据包的替代方法?

【问题讨论】:

    标签: crash jvm writer jpcap


    【解决方案1】:

    我看到了您对我的问题的评论。我遇到了同样的问题,这是我在关闭作者后试图关闭它时引起的。你可能会在不知不觉中关闭它。检查您的代码,并查看删除 writer.close(); 对您有什么影响。

    如果您不需要处理数据包,我建议使用Wireshark。它可以很容易地将数据包捕获为 TCPDump 并添加捕获过滤器。

    【讨论】:

    • 已经尝试删除 writer.close();。不能防止崩溃。有没有其他方法可以将数据包存储到 TCPDump 格式的文件中?
    • 如果您出于特定原因(操作数据包)不需要 Java,我会使用 Wireshark 或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 2014-10-13
    • 2016-10-11
    • 2012-01-14
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多