ntdll.dll вызывает крэш терминала

 

Здравствуйте, начал вылетать терминал. В журнале вот что:

Имя сбойного приложения: terminal.exe, версия: 4.0.0.902, отметка времени: 0x00bc3e00

Имя сбойного модуля: ntdll.dll, версия: 6.1.7601.17725, отметка времени 0x4ec49b8f

Код исключения: 0xc0000005

Смещение ошибки: 0x0004ff2b

Идентификатор сбойного процесса: 0xf1c

Время запуска сбойного приложения: 0x01d111a89b439834

Путь сбойного приложения: C:\Program Files (x86)\MetaTrader 4\terminal.exe

Путь сбойного модуля: C:\Windows\SysWOW64\ntdll.dll

 Закономерность появления не могу найти. Теоретически принцип работы такой:

  • Советник записывает инфу в бд мускула через определенное время по таймеру.
  • Параллельно через такое же время индикатор читает базу и по результатам таблицы выводит данные. 
Крэш появляется при считывании, при чем может появиться через 5 минут, а может через 30. Может отрисовать немного график, а может уже вначале графика упасть. 

 Тестировал на 2х ОС: Windows 7 x64, Windows 10 x64. MetaTrader4 b.902

 Появилась проблема  только при наличие индикатора. Раньше, когда в базу лез только советник - все было норм. Смущает только то, что это случается как-то непредсказуемо. 

 
Возможно в библиотеке идёт напрямую коннект к базе и считывание а так как индикатор работает в потоке терминала, то данный процесс иногда занимает большее время то тормозит и роняет терминал из-за этого, в длл-ке нужно отдельный поток создавать и уже в нём конектится к базе.
 
Эмммм.... простите за глупый вопрос, в какой длл"ке, libmysql.dll? Я взял готовый хедер где-то на сайте mql4 и через него работаю 
 
Не знаю устройства данной библиотеки, но когда начинал писать свои длл-ки то падало у меня как раз очень похоже. Из-за того что они тормозили терминал при длительных расчётах, то есть индикатор вызывает функцию из длл и терминал встаёт весь причём в ожидании ответа от неё и падает бывает.
 

Более опытные коллеги надеюсь поправят если я ошибаюсь.

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

 У меня стал падать на новом компе (win 7x64) от разных индикаторов

на XP такого не замечал

по совету пользователя установил терминал с сайта MQ, там стало получше, но проблема осталась.

Печалька :( 

 
Походу, вы были правы. Не могу сказать конкретно, но начинаю замечать такую статистику, что когда лишний график подключается к бд и вызывает несколько подряд ошибок мускула, через некоторое время падает терминал. Когда я присёк такие подключения, крэши вроде как пропали. Возможно наложение этих 3х обстоятельств и были причиной. Но это предположение. Я боялся больше какой-то несовместимости с х64. Буду тестить - буду видеть. Если что-то новое замечу - напишу. 
 
в try нужно заворачивать такие вызовы, особенно со сторонних длл-ок.
 
PozitiF:
в try нужно заворачивать такие вызовы, особенно со сторонних длл-ок.

Так нет же try-catch в mql4

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa384274(v=vs.85).aspx 

 
Я имел в виду что в самописной длл-ке вашей вызывается стандартная ntdll.dll вот вызовы функций из данной библиотеки и следовало бы обернуть. Хотя возможно оно так и есть а крах по причине первой что я озвучил выше.