Повреждение стека при использовании TSQLConnection.SetTraceEvent?

У меня есть многопоточное приложение, в котором для каждого потока создается новый TSQLConnection. Если я попытаюсь использовать трассировку (TSQLConnection.SetTraceEvent или TSQLMonitoring), я получу результаты трассировки, как и ожидалось, но после этого основной поток, похоже, останавливается, когда я пытаюсь использовать какие-либо функции базы данных. Приложение выдает исключение «Нарушение доступа по адресу 0x004dffcf: запись адреса 0xffffffff2», а стек вызовов в среде IDE показывает повторяющиеся строки «7c90327a ntdll.RlConvertUlongToLargerInteger + 0x3c» и «7c90e48a ntdll.KiUserExceptionDispatcher + 0xe», а верхняя строка — «Controls. ПрочитатьИмяКонтроля(???)".

Итак, функция трассировки глючит и не работает с многопоточным приложением или в моем приложении есть скрытый баг? Как узнать?

Я использую Делфи 2007.

Изменить Похоже, что исключение возникает даже при наличии двух отдельных соединений в основном потоке. Я попробую создать тестовое приложение.


person Harriv    schedule 08.08.2010    source источник
comment
Вам нужно будет отправить код...   -  person Mitch Wheat    schedule 09.08.2010
comment
DbConnection1.SetTraceEvent(MyEvent) достаточно..   -  person Harriv    schedule 09.08.2010
comment
Что ты хочешь увидеть? Я не могу опубликовать все приложение, а в остальном довольно просто. Модуль данных, содержащий SQL-соединение, создается несколько раз.   -  person Harriv    schedule 09.08.2010
comment
опубликуйте образец приложения или модуля, который демонстрирует такое поведение, запросив базу данных master в SQL Server.   -  person Jeroen Wiert Pluimers    schedule 09.08.2010


Ответы (1)


Проблема решена, у меня была загружена старая (и, по-видимому, глючная) версия драйвера InterXpress, я просто не понимал, что это часть проблемы.

person Harriv    schedule 09.08.2010