У нас есть приложение Java-сервера (64-разрядная версия Linux), которое использует собственный код для обработки. Собственный код также обрабатывает все проблемы многопоточности и недавно был улучшен коммутацией волокон с использованием boost::context
.
Проблема, с которой мы сталкиваемся прямо сейчас, заключается в том, что AttachCurrentThread
не работает для потоков с коммутацией волокон. После нескольких долгих сеансов отладки и тестирования мы обнаружили причину этого: похоже, JVM отказывается от потоков с указателями стека, отличными от указанных при ее создании.
Мы проверили это, просто подключившись к JVM из потока pthread с измененным (но действительным) rsp
, который не работает, когда rsp
изменяется.
Возможное исправление могло бы ввести какой-то механизм обработки событий, чтобы отделить обратные вызовы от потоков с коммутацией волокон, но мне бы очень хотелось этого избежать.
Кто-нибудь знает обходной путь для этого?
Можно ли отключить проверку стека (Oracle Java 1.7.0_40, 64 бит)?
Можем ли мы изменить собственные потоки pthread, чтобы они указывали на правильные кадры стека (я сомневаюсь, что сможем)? (Мы не можем заранее установить кадры стека).