• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Ошибки "Локальная куча переполнена" или "Пространство кучи Java"

  • Автор темы Vadim
  • Дата начала
V

Vadim

Добрый день!

Сегодня столкнулся с ошибкой лотуса:
Notes Error! Локальная куча переполнена - ( имя_представления )
Что бы это могло быть?
Попутно: из-за чего такое бывает и как бороться??

Спасибо!!!
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
67
Эх, люблю поиграть в гестапо. Начинаем пытки: :)

- ошибка на клиенте или на сервере?
- версии клиента/сервера какие?
- вид какой? Не календарный часом?
- сколько документов в виде?

ЗЫ. Про большие календарные виды написано тут -
 

puks

Lotus Team
03.02.2007
1 919
55
BIT
3
Локальные "кучи" надо чистить или использовать другие "кучи". Хотя, как показывает опыт, бороться с кучами бесполезно. В одном месте почистишь - в другом появляется: закон сохранения. Так что расслабься и не парься.
 
V

Vadim

Эх, люблю поиграть в гестапо. Начинаем пытки: :)

- ошибка на клиенте или на сервере?
- версии клиента/сервера какие?
- вид какой? Не календарный часом?
- сколько документов в виде?

ЗЫ. Про большие календарные виды написано тут -

- Ошибки как на клиенте, так и на сервере. Причем на сервере вошел в Administrator, так при просмотре статистики, логов и всякого остального тоже временами вываливается эта ошибка.
- клиент и сервер версии 6
- вид не календарный
- про кол-во документов интересно. Ошибка каждый раз в разных местах выскакивает. Т.е. не на определенной базе и не на определенном представлении
 
V

Vadim

Продолжаем - версия 6 какая именно?

сервер 6.5
клиент 6.5.2 (6.5.1, 6.5.3)

Кстати, Вы Administrator'а упомянули - так ошибка в нем или в обычном клиенте? Или и там, и там?

ошибка и там, и там, и не только на одном клиенте, а на всех
 

promvali

New member
07.09.2020
1
0
BIT
3
Я решал удалением профиля пользователя и настройкой заново.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
Добрый день!

Сегодня столкнулся с ошибкой лотуса:
Notes Error! Локальная куча переполнена - ( имя_представления )
Что бы это могло быть?
Попутно: из-за чего такое бывает и как бороться??

Спасибо!!!
а условия - когда происходит, типа форма открывается?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
Думаешь, этот Вадим до сих пор мучается от ошибки, спустя 12 лет? ;)
возможно и так, но это больше для "невольных" (новых) участников ветки :)
можно, конечно и ветку убить - чтобы "не всплывала"
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Если бы кто-то внятно объяснил причины ошибки и методы устранения, то можно было бы осавить первое и последнее сообщение темы. У нас тоже есть такие ошибки. Причём recycle'ми уже давно весь код пробит.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
А как ошибка на английском выглядит?
Где-то раз в 1-2 недели прилетает пачка из восьми вот таких писем:
----
Agent Manager: Agent error: JVMDUMP039I ð×ð▒ÐÇð░ð▒ð¥Ðéð║ð░ Ðüð¥ð▒ÐïÐéð©ÐÅ ð┤ð░ð╝ð┐ð░ "systhrow", Ðìð╗ðÁð╝ðÁð¢Ðé "java/lang/OutOfMemoryError" ð▓ 2021/10/17 15:52:42. ðƒð¥ð┤ð¥ðÂð┤ð©ÐéðÁ.
hub2
Originating Server: hub2
Event Severity: Normal
Event Type: Server
Event Time: 17.10.2021 15:52:42
----

В логах сервера бывает такое (от другого агента):
----
01.12.2021 20:23:21 Agent Manager: Agent printing: LogEntriesMerge [HUBO-C9APAZ] >> Общее время работы: [13.74 m.]
01.12.2021 20:23:21 Agent Manager: Agent error: ðÿÐüð║ð╗ÐÄÐçð©ÐéðÁð╗Ðîð¢ð░ÐÅ Ðüð©ÐéÐâð░Ðåð©ÐÅ ð▓ ð¢ð©Ðéð© "Thread-4745"# START NON-TRANSLATABLE
01.12.2021 20:23:22 Agent Manager: Agent error: sun.util.resources.OpenListResourceBundle.loadLookup(OpenListResourceBundle.java:158)java.lang.OutOfMemoryErrorjava.lang.OutOfMemoryError
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: Пространство кучи Java
01.12.2021 20:23:22 Agent Manager: Agent error: at
01.12.2021 20:23:22 Agent Manager: Agent error: java.util.zip.InflaterInputStream
01.12.2021 20:23:22 Agent Manager: Agent error: .
01.12.2021 20:23:22 Agent Manager: Agent error: <init>
01.12.2021 20:23:22 Agent Manager: Agent error: (
01.12.2021 20:23:22 Agent Manager: Agent error: InflaterInputStream.java
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: 1
01.12.2021 20:23:22 Agent Manager: Agent error: 2
01.12.2021 20:23:22 Agent Manager: Agent error: 3
01.12.2021 20:23:22 Agent Manager: Agent error: )
01.12.2021 20:23:22 Agent Manager: Agent error: at
01.12.2021 20:23:22 Agent Manager: Agent error: java.util.zip.ZipInputStream
01.12.2021 20:23:22 Agent Manager: Agent error: .
01.12.2021 20:23:22 Agent Manager: Agent error: <init>
01.12.2021 20:23:22 Agent Manager: Agent error: (
01.12.2021 20:23:22 Agent Manager: Agent error: ZipInputStream.java
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: 1
01.12.2021 20:23:23 Agent Manager: Agent error: java.lang.OutOfMemoryError
01.12.2021 20:23:23 Agent Manager: Agent error: :
01.12.2021 20:23:24 AMgr: Start executing agent 'SybaseFeedback_starter' in '...\dbname.nsf' by Executive '2'
----

Изредка ошибка успевает корректно записаться в лог:
----
03.10.2021 16:33
Агент: 'SynchStaff'
Ошибка: OutOfMemoryError: 'Пространство кучи Java'
com.ibm.security.util.ObjectIdentifier.<init>(ObjectIdentifier.java:290)
com.ibm.security.util.DerInputStream.getOID(DerInputStream.java:376)
com.ibm.security.x509.AVA.<init>(AVA.java:616)
com.ibm.security.x509.RDN.<init>(RDN.java:193)
com.ibm.security.x509.X500Name.parseDER(X500Name.java:1342)
com.ibm.security.x509.X500Name.<init>(X500Name.java:432)
com.ibm.security.x509.X509CertInfo.parse(X509CertInfo.java:905)
com.ibm.security.x509.X509CertInfo.<init>(X509CertInfo.java:240)
com.ibm.security.x509.X509CertImpl.parse(X509CertImpl.java:2661)
com.ibm.security.x509.X509CertImpl.<init>(X509CertImpl.java:225)
com.ibm.crypto.provider.X509Factory.engineGenerateCertificate(Unknown Source)
java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:407)
com.ibm.crypto.provider.JavaKeyStore.engineLoad(Unknown Source)
java.security.KeyStore.load(KeyStore.java:1456)
com.ibm.jsse2.ae.a(ae.java:85)
com.ibm.jsse2.ae$a.engineInit(ae$a.java:10)
javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:19)
com.ibm.jsse2.af.engineInit(af.java:11)
javax.net.ssl.SSLContext.init(SSLContext.java:15)
com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1737)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2391)
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120)
com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700)
java.sql.DriverManager.getConnection(DriverManager.java:675)
java.sql.DriverManager.getConnection(DriverManager.java:258)
agents.synchstaff.StaffDataSource.connect(StaffDataSource.java:262)
agents.synchstaff.StaffDataSource.getPositions(StaffDataSource.java:99)
agents.RunSynchStaff.refreshPositions(RunSynchStaff.java:288)
agents.RunSynchStaff.process(RunSynchStaff.java:225)
agents.LNAgent.main(LNAgent.java:33)
agents.LNAgentBase.NotesMain(LNAgentBase.java:132)
----

или от другого агента:
----
03.10.2021 16:33
Агент: 'SyncToPAB'
Ошибка: OutOfMemoryError: 'Пространство кучи Java'
agents.SyncWithPAB.process(SyncWithPAB.java:100)
agents.LNAgent.main(LNAgent.java:33)
agents.LNAgentBase.NotesMain(LNAgentBase.java:132)
----

Ошибки типа "JVM: The Java Virtual Machine creation returned an invalid JVM machine pointer" тоже проскакивают.

Какой-то закономерности не выявлено - валятся разные агенты. В некоторых из них есть подключение по jdbc, но в большинстве нет. Валится в случайном месте.
Админы наши иногда ругаются, т.к. создаются дампы по 3 Гб (и другой мусор), которые забивают диск.

Сейчас полностью пересохранил все наши Java-библиотеки и агенты, делаем глобальный релиз на все базы, потом понаблюдаем.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
@VladSh
Это классическая ООМ, что-то жрёт память.
У нас тоже есть такое, но пока решаем иначе. Поскольку винда, то отслеживаются сколько памяти отъедает процесс amgr и когда доходит до определенного значения, то просто делают рестарт задачи.
domino течет сам по себе, я подозреваю, что это могут быть даже внешние jar, тот же jdbc. Возможно сам класслоадер течет.
Анализировали логи, дампы, там именно класслоадер чаще всего остается.
Еще момент: шедульные агенты запускаются в изолированных потоках, то есть один и тот же jar может быть загружен в память разными потоками, они не видят друг друга.
Я пробовал запускать jvm с флагом gcpolicy:verbose чтобы печатались все классы при загрузке - очень много логов, очень.
заметил что при старте агента, что по расписанию, что на сервере - почти весь список грузится постоянно.
Нашёл когда-то вот такой проект:
но не пробовал, вот никак не дойдут руки, разовый как-то запуск был, но меня смутило, что там простой агент, а очистилось порядка 500 лотусовых объектов.
Либо не работает, либо немного странно работает.
Но одно понятно, чистить надо всё... тот же NotesDateTime - объект от notesSession, а следовательно любое получение его или обращение - выделяет память, да, она может потом вычиститься, со временем, а может и нет.
Если что-то возвращает лотусовый объект - надо в отдельную переменную и потом recycle.
Я больше надеюсь на новый java-api, который в keep используется, искренне надеюсь что его выведут и заменят текущий notes.jar
 
  • Нравится
Реакции: VladSh

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
Где-то раз в 1-2 недели прилетает пачка из восьми вот таких писем:
----
Agent Manager: Agent error: JVMDUMP039I ð×ð▒ÐÇð░ð▒ð¥Ðéð║ð░ Ðüð¥ð▒ÐïÐéð©ÐÅ ð┤ð░ð╝ð┐ð░ "systhrow", Ðìð╗ðÁð╝ðÁð¢Ðé "java/lang/OutOfMemoryError" ð▓ 2021/10/17 15:52:42. ðƒð¥ð┤ð¥ðÂð┤ð©ÐéðÁ.
hub2
Originating Server: hub2
Event Severity: Normal
Event Type: Server
Event Time: 17.10.2021 15:52:42
----

В логах сервера бывает такое (от другого агента):
----
01.12.2021 20:23:21 Agent Manager: Agent printing: LogEntriesMerge [HUBO-C9APAZ] >> Общее время работы: [13.74 m.]
01.12.2021 20:23:21 Agent Manager: Agent error: ðÿÐüð║ð╗ÐÄÐçð©ÐéðÁð╗Ðîð¢ð░ÐÅ Ðüð©ÐéÐâð░Ðåð©ÐÅ ð▓ ð¢ð©Ðéð© "Thread-4745"# START NON-TRANSLATABLE
01.12.2021 20:23:22 Agent Manager: Agent error: sun.util.resources.OpenListResourceBundle.loadLookup(OpenListResourceBundle.java:158)java.lang.OutOfMemoryErrorjava.lang.OutOfMemoryError
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: Пространство кучи Java
01.12.2021 20:23:22 Agent Manager: Agent error: at
01.12.2021 20:23:22 Agent Manager: Agent error: java.util.zip.InflaterInputStream
01.12.2021 20:23:22 Agent Manager: Agent error: .
01.12.2021 20:23:22 Agent Manager: Agent error: <init>
01.12.2021 20:23:22 Agent Manager: Agent error: (
01.12.2021 20:23:22 Agent Manager: Agent error: InflaterInputStream.java
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: 1
01.12.2021 20:23:22 Agent Manager: Agent error: 2
01.12.2021 20:23:22 Agent Manager: Agent error: 3
01.12.2021 20:23:22 Agent Manager: Agent error: )
01.12.2021 20:23:22 Agent Manager: Agent error: at
01.12.2021 20:23:22 Agent Manager: Agent error: java.util.zip.ZipInputStream
01.12.2021 20:23:22 Agent Manager: Agent error: .
01.12.2021 20:23:22 Agent Manager: Agent error: <init>
01.12.2021 20:23:22 Agent Manager: Agent error: (
01.12.2021 20:23:22 Agent Manager: Agent error: ZipInputStream.java
01.12.2021 20:23:22 Agent Manager: Agent error: :
01.12.2021 20:23:22 Agent Manager: Agent error: 1
01.12.2021 20:23:23 Agent Manager: Agent error: java.lang.OutOfMemoryError
01.12.2021 20:23:23 Agent Manager: Agent error: :
01.12.2021 20:23:24 AMgr: Start executing agent 'SybaseFeedback_starter' in '...\dbname.nsf' by Executive '2'
----

Изредка ошибка успевает корректно записаться в лог:
----
03.10.2021 16:33
Агент: 'SynchStaff'
Ошибка: OutOfMemoryError: 'Пространство кучи Java'
com.ibm.security.util.ObjectIdentifier.<init>(ObjectIdentifier.java:290)
com.ibm.security.util.DerInputStream.getOID(DerInputStream.java:376)
com.ibm.security.x509.AVA.<init>(AVA.java:616)
com.ibm.security.x509.RDN.<init>(RDN.java:193)
com.ibm.security.x509.X500Name.parseDER(X500Name.java:1342)
com.ibm.security.x509.X500Name.<init>(X500Name.java:432)
com.ibm.security.x509.X509CertInfo.parse(X509CertInfo.java:905)
com.ibm.security.x509.X509CertInfo.<init>(X509CertInfo.java:240)
com.ibm.security.x509.X509CertImpl.parse(X509CertImpl.java:2661)
com.ibm.security.x509.X509CertImpl.<init>(X509CertImpl.java:225)
com.ibm.crypto.provider.X509Factory.engineGenerateCertificate(Unknown Source)
java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:407)
com.ibm.crypto.provider.JavaKeyStore.engineLoad(Unknown Source)
java.security.KeyStore.load(KeyStore.java:1456)
com.ibm.jsse2.ae.a(ae.java:85)
com.ibm.jsse2.ae$a.engineInit(ae$a.java:10)
javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:19)
com.ibm.jsse2.af.engineInit(af.java:11)
javax.net.ssl.SSLContext.init(SSLContext.java:15)
com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1737)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2391)
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889)
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120)
com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700)
java.sql.DriverManager.getConnection(DriverManager.java:675)
java.sql.DriverManager.getConnection(DriverManager.java:258)
agents.synchstaff.StaffDataSource.connect(StaffDataSource.java:262)
agents.synchstaff.StaffDataSource.getPositions(StaffDataSource.java:99)
agents.RunSynchStaff.refreshPositions(RunSynchStaff.java:288)
agents.RunSynchStaff.process(RunSynchStaff.java:225)
agents.LNAgent.main(LNAgent.java:33)
agents.LNAgentBase.NotesMain(LNAgentBase.java:132)
----

или от другого агента:
----
03.10.2021 16:33
Агент: 'SyncToPAB'
Ошибка: OutOfMemoryError: 'Пространство кучи Java'
agents.SyncWithPAB.process(SyncWithPAB.java:100)
agents.LNAgent.main(LNAgent.java:33)
agents.LNAgentBase.NotesMain(LNAgentBase.java:132)
----

Какой-то закономерности не выявлено - валятся разные агенты. В некоторых из них есть подключение по jdbc, но в большинстве нет. Валится в случайном месте.
Админы наши иногда ругаются, т.к. создаются дампы по 3 Гб (и другой мусор), которые забивают диск.

Сейчас полностью пересохранил все наши Java-библиотеки и агенты, делаем глобальный релиз на все базы, потом понаблюдаем.
а нет желания во внешнюю жвм вынести? (как я описывал)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
заметил что при старте агента, что по расписанию, что на сервере - почти весь список грузится постоянно.
ну для агента - это практически запуск жвм (для тебя это не секрет)
а очистилось порядка 500 лотусовых объектов.
если наследование от AgentBase то и нотусячие классы потянутся
Я больше надеюсь на новый java-api, который в keep используется, искренне надеюсь что его выведут и заменят текущий notes.jar
остаётся вопрос - будет ли на них выход из джава агентов или мантулить что-то придётся
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
У нас тоже есть такое, но пока решаем иначе. Поскольку винда, то отслеживаются сколько памяти отъедает процесс amgr и когда доходит до определенного значения, то просто делают рестарт задачи.
domino течет сам по себе, я подозреваю, что это могут быть даже внешние jar, тот же jdbc. Возможно сам класслоадер течет.
У нас давно такого (первого случая) не было, и вот опять. Подозреваю, что это стало происходить потому, что мы перевели всех агентов одной базы на запуск с помощью Programs-документов.

Но одно понятно, чистить надо всё... тот же NotesDateTime - объект от notesSession, а следовательно любое получение его или обращение - выделяет память, да, она может потом вычиститься, со временем, а может и нет.
Если что-то возвращает лотусовый объект - надо в отдельную переменную и потом recycle.
Всё чистится. Абсолютно весь код пробит такими конструкциями.

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
Дай ссылку, плз.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!