powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayIndexOutOfBoundsException
9 сообщений из 9, страница 1 из 1
ArrayIndexOutOfBoundsException
    #33696525
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые, может подскажет кто, как может произойти следующее исключение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
java.lang.ArrayIndexOutOfBoundsException:  8731 
        at java.util.LinkedList.toArray(LinkedList.java: 657 )
        at com.aamsystems.css.objectstorage.ObjectDBAdaptorExtensionBase.getAllObjectLinks(ObjectDBAdaptorExtensionBase.java: 940 )
        at com.aamsystems.css.objectstorage.TObjectStorageImpl.addLink(TObjectStorageImpl.java: 1375 )
        at com.aamsystems.css.objectstorage.TObjectStoragePOA._invoke(TObjectStoragePOA.java: 434 )
        at com.aamsystems.css.objectstorage.TObjectStoragePOA._invoke(TObjectStoragePOA.java: 91 )
        at com.inprise.vbroker.poa.POAImpl.invoke(POAImpl.java: 2874 )
        at com.inprise.vbroker.poa.ActivationRecord.invoke(ActivationRecord.java: 187 )
        at com.inprise.vbroker.poa.ServerInterceptorManager$ARWrapper.invoke(ServerInterceptorManager.java: 115 )
        at com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java: 857 )
        at com.inprise.vbroker.IIOP.ServerProtocolAdapter.doRequest(ServerProtocolAdapter.java: 68 )
        at com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java: 1141 )
        at com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.java: 102 )
        at com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java: 80 )

код следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
         
    LinkedList retList =  new  LinkedList();
    // заполнение листа
     while  (rs.next())
    {
      TLinkInfo linkItem =  new  TLinkInfo();
      linkItem.Name = rs.getString("FName");
      linkItem.Type = rs.getString("FType");
      linkItem.SrcObject = rs.getString("FSrcObject");
      linkItem.DestObject = rs.getString("FDestObject");
      retList.add(linkItem);
    }
    ret =  new  TLinkInfo[retList.size()];
    retList.toArray(ret);

исключение кидается при выполнении последней строчки (retList.toArray(ret);)
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696614
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так
Код: plaintext
TLinkInfo[]ret = retList.toArray( new  TLinkInfo[ 0 ]);
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696645
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка нестабильно повторяется, поэтому не могу сразу проверить, но я почему то был уверен, что в данном случае все равно как писать по первому варианту или по второму
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696679
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут что-то говорится, про то что, возможно это баг: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4877288 в реализации LinkedList.toArray(Object[]). Трудно в это поверить, но почему бы нет. А еще вот тут можн опосмотреть: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4987749.
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696745
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у вас однопоточное приложение? Массив ret(если он глобальный конечно же) никто поменять не может во время выполнения метода retList.toArray(ret); ?
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696771
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение конечно многопоточное, но ret объявлется локально в методе
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33696805
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2pretender

насколько я понял из http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4987749:
Код: plaintext
1.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Have multiple threads operate on local LinkedList variables USING the toArray method

бага проявляется при вызове метода toArray в одно время на разные(!) LinkedList'ы и для решения этой проблемы надо засинхронизовать вызовы toArray на Linkdelist'ы во всем процессе?
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33698886
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wnoiseбага проявляется при вызове метода toArray в одно время на разные(!) LinkedList'ы и для решения этой проблемы надо засинхронизовать вызовы toArray на Linkdelist'ы во всем процессе?

Если честно, то мне тяжело сказать поможет ли это? Думаю, что да, но надо попробовать. С другой стороны, стоит ли заниматься этим (синхронизацией вызова toArray для всех LinkeList в Вашей системе)? Если com.aamsystems.css.objectstorage – это Ваш пакет, то, пожалуй, можно и попробовать, но если это библиотека стороннего разработчика, то не знаю.

Мне кажется, вам стоит обратить внимание на то, что данный баг был пофиксен. Возможно, стоит посмотреть, как ведет себя Ваше приложение на том релизе jdk, в котором эта проблема устранена? Хотя я не знаю, насколько в Вашем случае это приемлемо.

Если это Ваш пакет, и Вы предполагаете, что Ваше приложение должно работать на максимально большом количестве версий jdk, то тогда вариантов нет и надо как-то решать эту проблему.
...
Рейтинг: 0 / 0
ArrayIndexOutOfBoundsException
    #33738998
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перевел на ArrayList'ы - вроде нормально.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayIndexOutOfBoundsException
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]