当从 IntelliJ 运行并使用 setcap 赋予网络嗅探权限时,Java 每隔几秒输出一次完整线程转储

2023-12-23

我正在编写一个使用 Pcap 库进行数据包嗅探的应用程序。为了让它发挥作用,我需要给出java二进制网络嗅探功能,以避免必须将其运行为root:

sudo setcap cap_net_raw,cap_net_admin=eip /path/to/bin/java

当我运行任何程序时,每隔几秒钟,我就会得到一个完整线程转储到stdout. Here https://gitlab.com/Alfred456654/test-pcap/-/raw/master/bad_output.txt是此类完整线程转储的一个示例(存储库的其余部分不相关)。否则该程序似乎运行成功:除了转储之外,我找不到执行中的差异。

下面的代码足以重现该问题:

package main;

import java.io.IOException;

public class StdinTest {
    public static void main(String[] args) throws IOException {
        System.in.read();
    }
}

当我从java使用下面的命令运行二进制文件,一切都会恢复正常,并且我不再将完整线程转储到标准输出。

sudo setcap -r /path/to/bin/java

我不确定这是一个问题,因为程序似乎运行良好,但看起来并不normal.

我没有找到任何人似乎有类似的问题,我有点迷失......

感谢任何帮助,提前致谢!


Details:

  • 操作系统:在ArchLinux(内核5.12.9)和Ubuntu 20.04(内核5.8.0)上复制
  • JDK:在 Adopt OpenJDK 11、15 和 16、openjdk.java.net 15 和 16 上复制。

EDIT:

如果程序在命令行中运行,则无法重现:

java -classpath target/classes main.StdinTest

我仅在从 IntelliJ Idea Ultimate 启动时才会出现症状。我还没有尝试过其他 IDE。


我也在上面发布了我的问题Reddit https://www.reddit.com/r/javahelp/comments/nu6quj/full_thread_dump_every_few_seconds_when_java_is/有人建议当进程收到信号 3 时显示完整的线程转储。

我无法检测到通过使用发送给它的信号strace,但我确实注意到在命令行而不是在 IDE 中运行代码解决了这个问题。

我还尝试向在命令行中运行的程序发送信号 3,它确实显示相同的完整线程转储。

有点不太令人满意的结局,我不是 100% 确定发生了什么,但我越来越有信心这是一个我可以忽略的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当从 IntelliJ 运行并使用 setcap 赋予网络嗅探权限时,Java 每隔几秒输出一次完整线程转储 的相关文章

随机推荐

  • Facebook 登录 JS - FB.Event.subscribe('auth.login') 无需点击登录按钮即可触发

    我真的需要您帮助我尝试在我的网站上实现 使用 Facebook 登录 功能 基本上 我正在努力实现以下目标 如果用户之前已确认该应用程序并单击 FB 登录按钮 在我的网站上 他们登录到该网站 使用网站的用户 与 Facebook 用户 ID
  • Jquery 如果它是第一次单击元素

    我需要我的脚本在第一次单击元素时执行某些操作 并在单击 2 3 4 等时继续执行不同的操作 selector click function I would realy like this variable to be updated var
  • 如何扩展/继承组件?

    我想为 Angular 2 中已经部署的一些组件创建扩展 而不必几乎完全重写它们 因为基础组件可能会发生更改 并希望这些更改也反映在其派生组件中 我创建了这个简单的示例来尝试更好地解释我的问题 具有以下基本组件app base panel
  • 了解 JNDI

    JNDI 就像是一张增强版的地图 对吧 我使用键来查找对象的引用 另外 什么是InitialContext 我似乎不太明白这个想法 从概念上讲 JNDI 就像System getProperties 使用类固醇 System getProp
  • Nexus 6 融合位置提供程序 getSpeed 返回 0

    运行 Android 5 0 1 的 Nexus 6 设备上安装的 Google Play 服务版本 6 7 76 设备设置 位置模式设置为 仅限设备 在 Nexus 6 上 当使用具有 PRIORITY HIGH ACCURACY 的融合
  • JDK7 SSL 连接问题忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

    我正在建立 SSL 连接 作为客户端 并根据这篇 Oracle 文章 http docs oracle com javase 8 docs technotes guides security SunProviders html SunJSS
  • AWS ECS 503 服务在部署时暂时不可用

    我正在为我的应用程序使用 Amazon Web Services EC2 容器服务和应用程序负载均衡器 当我部署新版本时 我收到 503 服务暂时不可用大约 2 分钟 这比我的应用程序的启动时间要长一点 这意味着我现在无法进行零停机部署 是
  • 拉姆达捕获

    我总是对 lambda 捕获感到困惑 并且不知道变量是通过引用捕获还是通过值捕获 例如 如果我有 a 我不知道是否a通过值或引用捕获 我认为获得它的一个简单方法是通过示例 因此 让我们为每种情况准备一个 如果有多种表达同一事物的方式 则更多
  • 在 php 类中使用 html 是否不好?

    在类函数中使用 html 有什么问题吗 我在 DOM 中调用它 因此不需要返回字符串 public function the contact table gt div some html here div div class staff m
  • 在django中使用分页时如何返回最后一页?

    在一个简单的论坛中 我使用本机 django分页 https docs djangoproject com en 1 8 topics pagination 我希望用户在发布帖子后能够被引导至主题的最后一页 这是视图 login requi
  • Python:确保我的类仅使用最新协议进行腌制

    我正在开发一个只能使用协议 2 以及 Python 3 以上 进行有意义的腌制的类 当使用较旧的协议时 会发生难以追踪的错误 我希望为该类的用户节省一些调试的麻烦 因此我希望该类在使用小于 2 的协议进行 pickle 时立即引发异常 我怎
  • 存储序列化数组时进行清理

    如果我将序列化数组存储到 mysql 数据库 我应该在使用序列化函数之前或之后进行清理吗 或者我什至需要消毒吗 例如 details name mysql real escape string POST name details email
  • iOS 应用程序中的点赞按钮

    有谁知道如何将 Facebook 喜欢 按钮放入 iOS 应用程序中 我已经尝试过这里描述的方法博客文章 http petersteinberger com 2010 06 add facebook like button with fac
  • 使用 SQL 从 Oracle 数据库插入和检索 BLOB 数据的方法有哪些?

    我尝试使用 SQL Developer 插入 BLOB 数据 但我找不到实际用于插入 BLOB 数据的插入语句 除此之外 数据库速度确实很慢 对于小文件 它执行得很好 但是当我尝试将 50 mb avi 文件导入 BLOB 时 花了 3 4
  • Ruby Integer()、Array() 等——它们是什么?他们来自哪里?

    我有时遇到过 Array value String value 和 Integer value 形式的转换 在我看来 这些只是调用相应 value to a value to s 或 value to i 方法的语法糖 所以我想知道 这些是
  • Vuex如何处理api错误通知?

    两周前我开始使用 Vuex 我意识到 Vuex 非常适合处理应用程序的状态 但是 API调用的错误很难处理 当我从服务器获取数据时 我会调度一个操作 当数据成功返回后 当然一切都好了 但是当错误发生时 我改变了状态 我不知道如何通过Vuej
  • 通过 CSS 进行图像缩放:是否有 -moz-crisp-edges 的 webkit 替代品?

    我有一张像素为 100x100 的图像 我想显示它两倍的大小 所以 200x200 我想通过 CSS 来完成 而不是通过服务器来完成 几年以来 所有浏览器都对图像进行了抗锯齿处理 而不是按像素缩放 Mozilla 允许指定算法 image
  • 什么时候静态生命周期不合适?

    我在网上找到了很多有关 Rust 生命周期的信息 包括有关静态生命周期的信息 对我来说 在某些情况下 你必须保证引用比所有东西都更长寿 这是有道理的 例如 我有一个要传递给线程的引用 编译器要求将该引用标记为静态 在这种情况下 这似乎是有意
  • 如何在 Chrome 开发工具控制台中获取 JSON 输出?

    有没有一种方法可以在控制台中以良好的方式输出 json 我只是将 gt 对象 作为树根 并且必须手动浏览树 这很烦人 最好的情况是在该对象中搜索字符串 或者扩展一切也可以 有任何想法吗 之前被问到Chrome 控制台有没有办法在控制台输出中
  • 当从 IntelliJ 运行并使用 setcap 赋予网络嗅探权限时,Java 每隔几秒输出一次完整线程转储

    我正在编写一个使用 Pcap 库进行数据包嗅探的应用程序 为了让它发挥作用 我需要给出java二进制网络嗅探功能 以避免必须将其运行为root sudo setcap cap net raw cap net admin eip path t