2014-08-29 5 views
2

Случайно я обнаружил, что стат одного Java-процесса - T (Остановлен либо сигналом управления заданием, либо потому, что он прослеживается). Я думаю, что это может быть связано с jinfo, потому что я запустил эту команду в то время. Затем я снова пытаюсь запустить jinfo, и процесс разбил агагин. Но это непросто воспроизвести.jinfo случайно разбил JVM

У кого-нибудь есть идея, почему стат процесса стал T без kill -SIGSTOP? У jinfo есть ошибка, которая может привести к сбою процесса?

EDIT: У меня есть 100% проблема с воспроизведением, когда jinfo процесс длился более 60 дней. Кажется, что ошибка вызвана, если процесс длится долго. Это не работает для новых процессов.

OMG, jmap имеет такую ​​же проблему, и она также воспроизводится на 100%. Но не для jstack. Теперь я уверен, что это что-то об обнаружении jvm.

$ Java -версия
Java версия "1.6.0_37"
Java (TM) SE Runtime Environment (сборка 1.6.0_37-b06)
Java HotSpot (TM) 64-разрядный сервер VM (сборка 20.12-b01, смешанный режим)

+0

Просьба пояснить, что вы имеете в виду под «крушением». Описан ли процесс аномально или он просто приостанавливается? Когда это происходит? После запуска 'jinfo'? Какая именно команда? Как часто это происходит? В этом случае ничего не отображается в jinfo? – apangin

+0

Спасибо @apangin за ответ. В первый раз процесс Java приостанавливается, а не откликается на какой-либо запрос, но процесс существует, а stat - T. В следующий раз я запустил 'jinfo', из-за чего процесс завершился. С тех пор это произошло два раза. Я просто запускал 'jinfo' без каких-либо параметров, например' jinfo 23943'. Вывод 'jinfo' является нормальным, но иногда он разбивает процесс. – tobe

+0

ОК. Какая версия JDK используется? Вы запускаете 'jinfo' и' jmap' из того же JDK, на котором работает ваше целевое приложение? – apangin

ответ

0

Это ошибка JDK 1.6.0 или ptrace с ядром 2.6.32. Я буду тестировать разные версии.