gpt4 book ai didi

java - JNI : AttachCurrentThread returns -1

转载 作者:行者123 更新时间:2023-11-30 07:28:33 46 4
gpt4 key购买 nike

我已经为库创建了一个带有 swig 的 JNI 包装器。我使用 swig Controller 回调 JVM。其中一些回调发生在 native 库中创建的线程上。非 JVM 线程上的第一个回调失败并出现 SIGSEGV,我可以追溯到忽略 AttachCurrentThread 的负返回值 (-1),从而取消引用实际上为 null 的 jenv 指针。这发生在 swig 生成的代码中。

我尝试通过 Controller 类从我在 native 端创建的线程回调到 JVM。这很好用。但是,它无法在我包装的库创建的线程中工作。

AttachCurrentThread 失败的可能原因有哪些?

最佳答案

当线程没有足够的剩余堆栈空间时,AttachCurrentThread 失败。不幸的是,Oracle JVM 的文档没有提到 AttachCurrentThread 工作所需的最小堆栈空间。

就我而言, native 库针对嵌入式硬件进行了优化,因此通常创建堆栈大小为 100000 字节的线程。

关于java - JNI : AttachCurrentThread returns -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486298/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com