Неверный доступ к памяти местоположения в Java - PullRequest
16 голосов
/ 03 июля 2011

Я работаю над проектом Java в течение года.Мой код работал нормально в течение нескольких месяцев.Несколько дней назад я обновил Java SDK до последней версии 1.6.0_26 на своем Mac (Snow Leopard 10.6.8).После обновления происходит нечто очень странное.Когда я запускаю некоторые классы, я получаю эту ошибку:

Недопустимый доступ к памяти местоположения 0x202 rip = 0x202

Но, если я запускаю их с -Xint (интерпретировать) они работают, медленно, но работают нормально.Я получаю эту проблему в классах, где я использую побитовые операторы (битборды для игры Отелло).Я не могу поместить любой код здесь, потому что я не получаю ошибку, исключение или что-то подобное.Я просто получаю это раздражающее сообщение.

Это нормально, что код не работает без -Xint, но работает с ним?Что мне делать?

Заранее спасибо

Ответы [ 4 ]

4 голосов
/ 18 февраля 2012

Я только что столкнулся с этой ситуацией, и оказалось, что она связана с фрагментом кода, который сериализует объект JSON с циклической ссылкой на самого себя.Я удалил цикл, и ошибка ушла.Я подозреваю, что это связано с ошибкой переполнения памяти, которая теперь по-разному обрабатывается новыми JVM в Mac OSX.В этом случае я работал под управлением Mac OSX 10.7.

Для полноты я получил следующие ошибки:

Invalid access of stack red zone 0x10e586d30 rip=0x10daabba6
Bus error: 10

И:

Invalid memory access of location 0x10b655890 rip=0x10a8baba6
Segmentation fault: 11
4 голосов
/ 03 июля 2011

Когда JVM начинает так аварийно завершать работу, это признак того, что что-то сломало модель выполнения JVM.

Содержит ли ваше приложение какой-либо собственный код?Используются ли сторонние библиотеки с компонентами собственного кода?Если ни то, ни другое не соответствует действительности, то есть вероятность, что это ошибка в порте Apple JVM.Это может быть ошибка компилятора JIT или ошибка в некоторой библиотеке собственного кода JVM.

Что вы можете сделать с такой ошибкой?

Не много.

  • Сокращайте свое приложение, постепенно отбрасывая биты, пока у вас не появится небольшой тестовый сценарий, в котором обнаружена проблема.
  • На основе тестового примера посмотрите, есть ли какой-нибудь эмпирический способ избежать проблемы.
  • Отправьте отчет об ошибке в Apple с тестовым набором.
0 голосов
/ 17 апреля 2017

Пожалуйста, проверьте, если /etc/hosts пусто, и убедитесь, что оно включает эти конфигурации:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
0 голосов
/ 03 июля 2011

Также убедитесь, что вы создаете GUI на потоке отправки событий и никогда не обновляете компонент GUI из какого-либо другого потока.

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

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