我们有一个Java服务器(Linux 64位)应用程序,它使用本机代码进行处理.本机代码还处理所有多线程问题,并且最近使用光纤交换进行了增强boost::context.
我们现在面临的问题是AttachCurrentThread光纤交换线程失败了.经过一些长时间的调试和测试后,我们找到了原因:JVM似乎拒绝了与创建时不同的堆栈指针的线程.
我们通过简单地从具有修改(但有效)的pthread附加到JVM来验证这一点,该pthread rsp在rsp被修改时失败.
一个可能的修复方法会引入某种事件处理机制来将回调与光纤交换线程分离,但我真的想避免这种情况.
有人知道解决方法吗?
是否可以禁用堆栈检查(Oracle Java 1.7.0_40,64位)?
我们可以修改本机pthreads以指向正确的堆栈帧(我怀疑我们可以)吗?(我们不能提前设置堆栈帧).