Появилась задача: иметь тредпул, в котором задачи можно прерывать по истечении некоторого таймаута.
Вся гуглёжка сводится к "нет, так нельзя".
Ну мы же инженеры, пьём трипл ипу из черепов фронтендеров, так что откопали, что если в джава послать треду SIGBUS, то он выбросит java.lang.InternalError, который успешно пролетит весь стек вызовов, пока ты его не поймаешь.
Скоро сказка сказывается, да не скоро код пишется.
Прерываемый тред ощущает последствия сигнала иногда за 700мс, а иногда и за несколько секунд (текущий рекорд — 111 секунд).
А если пустить это тестироваться в бесконечном цикле, то итераций через 50 случается SIGABRT. В общем, я уже даже jdk в дебаге собрал и принтфов там наделал, но до конца механику пиздеца пока не понял.