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

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

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

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

крушение сервера на Noteupdate

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

Vvv

Пожалуйста посоветуйте как можно решить проблемму.
Принимаются любые идеи (не только с domino с api) так как бьюсь уже неделю

Есть мой addin на c api. если мой addin не работает то куршений нет.
При одновременном обращении к одной и той же базе моего addin и nIMAP происходит крушение сервера

############################################################
### FATAL THREAD 7/10 [ nIMAP: 0c70: 0154]
### FP=0x13a3f444, PC=0x602774b7, SP=0x13a3f444
### stkbase=13a40000, total stksize=262144, used stksize=3004
### EAX=0x00000000, EBX=0x60c9ddf8, ECX=0x13a3f800, EDX=0x00ebeed0
### ESI=0x00000000, EDI=0x13a3f800, CS=0x0000001b, SS=0x00000023
### DS=0x00000023, ES=0x00000023, FS=0x0000003b, GS=0x00000000 Flags=0x00010202
Exception code: c0000005 (ACCESS_VIOLATION)
############################################################
@[ 1] 0x602774b7 nnotes.CIMsgMimeDirectoryStreamStore::GetHeaderStream+71 (ebed34,ebeed0,13a3f800,13a3f7f0)
@[ 2] 0x602447c9 nnotes.CIMsgImport::RewriteHeaders+233 (13a3f83c,ebed34,0,13a3f834)
@[ 3] 0x6027a2d7 nnotes.CIMsgMimeDirectoryStore::GetSomeHeaders+87 (ebed34,0,13a3f9f9,0)
@[ 4] 0x60278cb8 nnotes.MDGetSomeHeaders@28+40 (ebed34,0,13a3f9f9,0,0,0,0)
@[ 5] 0x004075be nIMAP.FormatBodyPart+990 (13a3fed8,1,0,56b0850,0,0,0)
@[ 6] 0x00408f83 nIMAP.FormatData+675 (2a465ac,56b0850,56b0a2c,13400001,0,0,0)
@[ 7] 0x00409891 nIMAP.ResponseProcess+1457 (11b,13400001,e72ee8,3,0,0,0)
@[ 8] 0x00418e04 nIMAP.IMAPThreadProc@4+836 (0)
@[ 9] 0x600fe6ef nnotes.ThreadWrapper@4+175 (0)
[10] 0x7c80b713 kernel32.GetModuleFileNameA+436


Крушение на вызове моим addin функции NSFNoteUpdate
@[19] 0x6012228b nnotes.NSFNoteUpdate@8+27 (2,0)

те hendle note 2, update_flags - флаг обновления 0 (в других задачах флаг 0 работает нормально)

Сам считаю что пути решения
1) как то проверять что note занята другим процессом (как проверить не знаю)
2) использовать какой то из этих флагов обновления

UPDATE_FORCE - Do an update or delete even if some other user has updated the note between the time the note was read into memory and the time we try to write it. This flag is appropriate for both updating and deleting a note.

UPDATE_NAME_KEY_WARNING - Give an error if the updated note contains a new field name that wasn't already defined in one of the forms in the database. This flag is appropriate for updating a note only.

UPDATE_NOCOMMIT - Do not flush all data to disk after the update. The note will be updated by the system, but non-summary data may not be immediately written to disk. This may improve the speed of NSFNoteUpdate if many operations are to be done sequentially, but risks loss of data if the machine crashes before data can be flushed to the disk. Summary data is always written to disk regardless of whether this flag is set or clear. This flag is appropriate for both updating and deleting a note.

UPDATE_NOREVISION - Do not maintain revision history. This flag is appropriate for updating a note only.

UPDATE_NOSTUB - Leave no trace of the note in the database if the note is deleted. This flag is only appropriate for deleting a note. You can use this flag on a deletion stub by removing the RRV_DELETED flag from the note id of the deletion stub before calling NSFNoteDelete or NSFNoteDeleteExtended. Once the deletion stub is removed, the deletion of the note will not be replicated. Otherwise, UPDATE_NOSTUB is only useful for applications that do NOT use views, and do not replicate. For example, a gateway may periodically examine a mail.box file, using NSFSearch and simply delete a document (using UPDATE_NOSTUB) when it's done with it. The database does not replicate, nor does it need views. UPDATE_NOSTUB ensures that there is minimum waste space allocated to stubs that are never needed in a highly volatile request-style database. Documents that are deleted with UPDATE_NOSTUB will still appear in the Domino views of the database and may cause problems when replicated. The documents themselves will not exist in the database and therefore cannot be opened.

UPDATE_INCREMENTAL - Compute incremental note info.

UPDATE_DELETED - The current update is a step in the process of deleting a note. API programs only use this flag in the context of a database hook driver. See Data Type DBHOOKVEC. Normally, API programs do not set this flag in calls to NSFNoteUpdate or NSFNoteDelete. NSFNoteDelete specifies this flag when it calls NSFNoteUpdate in the process of writing the deletion stub to the disk.

UPDATE_DUPLICATES - Obsolete. Allow duplicate items of the same name. This flag is appropriate for updating a note only.

UPDATE_SHARE_SECOND - Extended (32-bit DWORD) option: Split the second update of this note with the Note Object Store.

UPDATE_SHARE_OBJECTS - Extended (32-bit DWORD) option: Share only objects with the Note Object Store, not the summary information.


посоветйет пожалуйста что можно сделать
 
T

TIA

Крушение на вызове моим addin функции NSFNoteUpdate
@[19] 0x6012228b nnotes.NSFNoteUpdate@8+27 (2,0)
Этого не видно из приведённого куска NSD. Видно, что падение в nIMAP. Как вы получаете хэндл ноты, передаваемый в NSFNoteUpdate? Не происходит ли получение хэндла в одном потоке команд, а вызов NSFNoteUpdate в другом?
 
V

Vvv

Этого не видно из приведённого куска NSD. Видно, что падение в nIMAP. Как вы получаете хэндл ноты, передаваемый в NSFNoteUpdate? Не происходит ли получение хэндла в одном потоке команд, а вызов NSFNoteUpdate в другом?

Из приведенного куска NSD этого не видно. Но из части nsd было видно что мой addin при крушении делал update
Я пробовал несколько раз крушение все время на update

я закоментировал update крушения исчезли

addin однопоточный но сначала берет все ноты которые будет обрабатывать потов в цикле обрабатывает
 
T

TIA

Из приведенного куска NSD этого не видно. Но из части nsd было видно что мой addin при крушении делал update
Охотно верю, но было бы проще если бы был приведён ещё и стек вашего addin'а, или весь nsd.
А крушения всегда на nnotes.CIMsgMimeDirectoryStreamStore::GetHeaderStream ?
 
T

TIA

хенды типа лонг или интежер
Думаю, я смогу ответить. Если это настоящий Addin, то он либо C/C++, либо на Java. Т.к. речь про NSFNoteUpdate, то остаётся только C/C++. В Notes С API хэндлы ноты имеют тип NOTEHANDLE, которые под Win32 определяются как unsigned int, т.е. беззнаковое четырёхбайтное целое.
 
V

Vvv

addin написан на C
определенеи хендлера такое - NOTEHANDLE hNote = NULLHANDLE;


#if defined(DOSW16)
typedef unsigned int HANDLE; /* really a short, but compiler is picky */
#elif defined(HANDLE_IS_32BITS)
typedef unsigned int HANDLE; /* 32-bit HANDLEs */
#else
typedef unsigned short HANDLE;
#endif

соотвественно - typedef unsigned int HANDLE; /* 32-bit HANDLEs */

я подготовлю полный nsd и виложу но формальное крушение в nIMAP завивист от update в моем addin без update все нормально
 
V

Vvv

TIA я прекрпеил полный nsd log посмотрите пожалуйста
 

Вложения

  • nsd_W32I_cactus_2009_10_05_13_04_27.zip
    518,2 КБ · Просмотры: 123
T

TIA

Я правильно понимаю, что ваши процессы называются addin1, addin2, addin3? Или какой-то один из них? Они одинаковы по содержанию? Пока попробуйте отключить антивирус, продолжаться ли падения?
 
V

Vvv

антивируса нет, это тестовый сервер для разработки
addin1, addin2, addin3 да это они
update в addin1 влияет на падения, остальные не влияют не как
 
T

TIA

Ещё отключите экстеншен менеджер nXXEX.

А вот это что за dll грузится?
C:\Documents and Settings\All Users\Application Data\Protea AntiVirus Tools\vbd\vbengnt.dll
Или она только для ваших процессов ?
 
V

Vvv

vbengnt.dll грузиться но сам антивирус нет
nXXEX сейчас попробую отключить как то не подумал попробовать без него

nXXEX не влияет без нее так же падает
 
T

TIA

Я так понял, что аддын сканирует директорию, в некоторых БД из директории перебирает документы, извлекает вложения, и что-то с ними делает. А что сохраняется?
Что аддын в двух словах делает?
Смотрю, базы типа s2 похожи на почтовые, они и сканируются?
 
V

Vvv

документы, извлекает вложения, и что-то с ними делает. А что сохраняется?
Что аддын в двух словах делает?

Смотрю, базы типа s2 похожи на почтовые, они и сканируются?
да базы почтовые.
когда один из addin сканирует базу я пытаюсь прочитать почту по IMAP и происходит крешь
 
Мы в соцсетях:

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