Конструктор CRecordSet кидает неизвестное исключение
От: DeaD_MoroZ  
Дата: 21.04.04 07:15
Оценка:
Есть классик CDataBaseEx : public CDatabase.

У него есть функция GetDataFromTable

{
CRecordset* pRecordset = 0;

m_MainCS.Lock();

try
{
pRecordset = new CRecordset(this);
// Do SMTH
}
catch (CDBException* pDBE)
{
m_MainCS.Unlock();
// Do SMTH
}
catch (CMemoryException* pME)
{
m_MainCS.Unlock();
// Do SMTH
}
catch(CException* pE)
{
m_MainCS.Unlock();
// Do SMTH
}
catch(...)
{
m_MainCS.Unlock();
// Do SMTH
}
m_MainCS.Unlock();
}

При многопоточной работе через некоторое время в строке "pRecordset = new CRecordset(this);"
кидается исключение, которое ловится в секции "catch(...)"

После этого первый поток, который входит в критическую секцию m_MainCS
виснет в строке "pRecordset = new CRecordset(this);". Соответственно всё лочится.

Проявляется всё это исключительно в релизной версии.
Работать может всё это от 3х часов до нескольких суток..
Все таймауты на коннект и выполнение операций стоят по умолчанию 15 секунд.

Может быть кто-нибудь сталкивался с чем-то подобным?
И как можно определить тип исключения, которое можно поймать в "catch(...)"?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.