[sisyphus] Работоспособность Sun JDK и пара вопросов про glibc
Michael Rumjantsev
=?iso-8859-1?q?geom_=CE=C1_inetlab=2Ecom?=
Пн Апр 15 13:18:41 MSD 2002
Привет!
Хотелось бы выяснить, предпринимаются ли кем-нибудь попытки оживить Java
native threads под Sisyphus или вообще никто не в курсе? Тут, помнится,
уже были сообщения об этом, значит, не у меня одного проблемы.
Имеется Junior 1.1 с апдейтами из Sisyphus
kernel24-up-2.4.18-alt5
glibc-2.2.5-alt(1,2,3) (пробовались разные)
jre-1.3.1-alt2
Hа простом тесте java падает по SIGSEGV:
[geom на geom java]$ /usr/lib/jre1.3.1/bin/java -version
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
[geom на geom java]$ /usr/lib/jre1.3.1/bin/java SegFaultTest
Segmentation fault
SegFaultTest.java
public class SegFaultTest
{
public static void main(String[] args)
{
new SegFaultTest();
}
public SegFaultTest()
{
new SegFaultTest();
}
}
Падает также любое Java-приложение, в котором при достаточно глубоком стеке
возникает exception (сиречь, сигнал). Естественно, java -classic работает прекрасно.
Могу твердо сказать, что glibc тут ни при чем - я перепробовал их штук пять
разнообразной сборки, все равно падает. Зато замена ядра на
kernel24-linus-2.4.18-alt5 все чудесным образом вылечивает. Может найдется
человек, способный разобраться в этой туче ядерных патчей и сказать, что
ему мешает?
Параллельно пара вопросов по glibc:
1) Почему не применяется РедХатовский метод сборки пакета с отдельной
версиеий в /lib/i686/*, собранной с --enable-kernel=2.4.0? Для той же
джавы это частично облегчает жизнь, падает реже.
2) Это даже не вопрос. В Сизифовской сборке в linuxthreads баг остался,
надо патчик наложить. В том же РедХате это уже исправлено.
--- glibc-2.2.5/linuxthreads/signals.c.orig Thu Mar 28 20:26:38 2002
+++ glibc-2.2.5/linuxthreads/signals.c Thu Mar 28 20:27:34 2002
@@ -199,6 +199,7 @@
s != __pthread_sig_debug) {
sigdelset(&mask, s);
if (sighandler[s].old == NULL ||
+ sighandler[s].old == (arch_sighandler_t) SIG_ERR ||
sighandler[s].old == (arch_sighandler_t) SIG_DFL ||
sighandler[s].old == (arch_sighandler_t) SIG_IGN) {
sa.sa_handler = pthread_null_sighandler;
--
Michael Rumjantsev
iNetLab
Подробная информация о списке рассылки Sisyphus