Приложение Play Framework вылетает в Linux - PullRequest
2 голосов
/ 02 января 2012

У меня есть приложение Play (1.2.4), которое отлично работает на моей 64-битной машине с Windows 7.

У меня было несколько сбоев, когда я работал на бета-версии Java 7.0;эти сбои JavaVM будут появляться при определенных модификациях кода, но без какой-либо «логической» причины (например, добавление класса администратора crud), но я переключился на последнюю версию 7.0_2, и теперь все в порядке в Windows.(s) - это / есть Linux.

Опять же, все работало нормально, но после моего недавнего обновления кода он продолжает падать.

~ play! 1.2.4, http://www.playframework.org
~
~ Ctrl+C to stop
~
Listening for transport dt_socket at address: 8000
05:20:36,845 INFO  ~ Starting /home/scrosta/PROJECT
05:20:36,849 INFO  ~ Module crud is available (/home/scrosta/play-1.2.4/modules/crud)
05:20:36,849 INFO  ~ Module jqueryui is available (/home/scrosta/PROJECTNAME/modules/jqueryui-1.0)
05:20:36,850 INFO  ~ Module logisimayml is available (/home/scrosta/PROJECTNAME/modules/logisimayml-1.5)
05:20:36,850 INFO  ~ Module secure is available (/home/scrosta/play-1.2.4/modules/secure)
05:20:36,851 INFO  ~ Module deadbolt is available (/home/scrosta/PROJECTNAME/modules/deadbolt-1.4.3)
05:20:37,461 WARN  ~ You're running Play! in DEV mode
05:20:37,522 INFO  ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
05:21:07,468 INFO  ~ Connected to jdbc:h2:mem:play;MODE=MYSQL
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f3c3cb7a438, pid=17664, tid=139896551085824
#
# JRE version: 6.0_22-b22
# Java VM: OpenJDK 64-Bit Server VM (20.0-b11 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.10.4
# Distribution: Ubuntu 11.04, package 6b22-1.10.4-0ubuntu1~11.04.1
# Problematic frame:
# V  [libjvm.so+0x5ec438]  PhaseIdealLoop::build_loop_late_post(Node*)+0x158
#

Весь журнал доступен на pastie

Я тестировал на одной машине Gentoo: IcedTea Java 6 и Oracle Java 7, а также на другой машине Ubuntu с IcedTeaJava 6. Та же проблема.И никаких проблем в Windows.

Я снова запустил зависимости и тоже поиграл.

Есть идеи, что может спровоцировать это, как решить, как отладить ...?

PS.

play precompile

работает нормально.

РЕДАКТИРОВАТЬ

Как я уже говорил, я получал в значительной степени то же самоеошибка в Windows перед переходом на последнюю версию Java 7.0_2.

Поскольку в Linux я получал его как с JDK 6, так и с 7 от двух разных поставщиков, я думал, что это не может быть связано.

ХОРОШО, заканчивается тем, что удаление одного моих контроллеров Crud решает проблему - это означает, что приложение запускается снова.

Таким образом, я испытываю желание обвинить модуль CRUD (но надеюсь, что новыйJava-обновление для Linux решит проблему).

Если кто-то из игроков!заинтересован в том, чтобы узнать больше о моих классах, пожалуйста, прокомментируйте.

Edit 2

Удаление некоторых классов crud, по-видимому, решило проблему, как бы она ни казалась.

Но мне теперь пришлось перейти к развертыванию JBoss, и ошибка снова появилась!

На самом деле вылетает весь JBoss с точно такой же ошибкой ...

Ответы [ 3 ]

2 голосов
/ 10 сентября 2012

Просто обновите JDK до последней версии Jdk 1.7 7u7, и проблема будет решена, столкнулся с проблемой, которая теперь решена с помощью udgrading jvm

1 голос
/ 21 февраля 2012

Это определенно ошибка в Java из-за компилятора Eclipse.

Есть ошибка, чтобы отследить на play.lighthouse .

Кажется, что классы CRUDусугубить проблему, и нехватка памяти тоже;проблема, как правило, исчезнет и вернется только для горячей компиляции (изменение кода Java без перезапуска), и даже там не всегда.

С другой стороны, развертывание в JBoss определенно приводит к полным сбоям.

С небольшими грубыми классами и большим количеством доступной памяти ситуация улучшается, поэтому как обходной путь, когда вы действительно больше ничего не можете сделать: уменьшите до минимума количество классов CRUD ;использование декоратора @For снова, кажется, ухудшает ситуацию.

Кроме того, использование Java 6 намного более стабильно - менее чувствительно к памяти - особенно с JBoss.

Я отмечу это как решенное, потому что, кроме трюка с CRUD и предложения использовать Java 6, больше ничего нельзя сделать на этом уровне.

1 голос
/ 02 января 2012

Я думаю, твоим классам нужно много места. См

PSPermGen       total 40448K, used 40403K [0x000000067c400000, 0x000000067eb80000, x0000000686a00000)
object space 40448K, 99% used [0x000000067c400000,0x000000067eb74e08,0x000000067eb80000)

, поэтому я бы порекомендовал увеличить permsize и создать отчет об ошибке на openjdk. Потому что я думаю, что OutOfMemoryError должен быть брошен.

Здесь вы можете получить больше информации о разрешении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...