URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7564
[ Назад ]

Исходное сообщение
"Unknown error на деструкторах"

Отправлено kyzmichirk , 27-Авг-08 13:10 
Не могу решитиь следующую проблему: Программа где-то на деструкторах или освобождении ресурсов вываливается с Unknown Error Не могу понять отчего это происходит. Последнее место, после чего обрывается - деструктор класса Features. Система - FreeBsd, язык - C++ Но в нем, вроде, все в порядке. Посоветуйте отчего может быть данная ошибка, где копать????
class Features {
private:
   StringSet ftrscache;
   void Cache()
   {
       if (ftrscache.empty())
       {
          try
          {
              string req_data;
              SU(req_data = mgrExecXml("featurelist", (char*)0));
              for (mgrRequestList ftrs(req_data); !ftrs.Eof(); ftrs.Next())
                 ftrscache.insert(ftrs.Name());
          } catch (Error& e) {
                Warning(("failed to get featurelist: %s",e.Message().c_str()));
          }
      }
   }

public:
   ~Features()
   {
       BackupLog(("DestrFeature"));
   }
   bool Has(const string& ftr)
   {
       Cache();
       return (ftrscache.find(ftr) != ftrscache.end());
   }
    void AddToCache(const string& ftr)
   {
       ftrscache.insert(ftr);
   }
} features ;


Содержание

Сообщения в этом обсуждении
"Unknown error на деструкторах"
Отправлено phpcoder , 27-Авг-08 13:48 
>Не могу решитиь следующую проблему: Программа где-то на деструкторах или освобождении ресурсов
>вываливается с Unknown Error Не могу понять отчего это происходит. Последнее
>место, после чего обрывается - деструктор класса Features.

Раз вываливается, значит должен оставаться core файл. gdb вам в руки!


"Unknown error на деструкторах"
Отправлено kyzmichirk , 28-Авг-08 09:54 
>>Не могу решитиь следующую проблему: Программа где-то на деструкторах или освобождении ресурсов
>>вываливается с Unknown Error Не могу понять отчего это происходит. Последнее
>>место, после чего обрывается - деструктор класса Features.
>
>Раз вываливается, значит должен оставаться core файл. gdb вам в руки!

К сожалению он при этом не дампится, если вызвать ошибку Segmentation Failed тогда дампится, а при этой нет((


"Unknown error на деструкторах"
Отправлено Аноним , 29-Авг-08 16:43 
>Программа где-то на деструкторах или освобождении ресурсов

Отладчик поможет найти  точное место.


"Unknown error на деструкторах"
Отправлено dronord , 04-Сен-08 12:57 
Ужасный код.
Если делаешь ООП дизайн приложения - делай, не пиши BackupLog() и SU().
Что это за ф-ии?

Сделай конструктор тогда уж, если делаешь деструктор:

Features::Features() : ftrscache()
{}


"Unknown error на деструкторах"
Отправлено Kyzmichirk , 04-Сен-08 14:17 
Конструктор здесь совсем не нужно писать, компилятор его сам сделает. Деструктор тоже, его я, чтобы отлавить ошибку вставил. А BackupLog и SU это вообще макросы, и без них никуда. Если их не использовать повторяющегося кода быде такая куча!!!!



"Unknown error на деструкторах"
Отправлено kyzmichirk , 13-Окт-08 08:18 
Если кому вдруг поможет, разобрался в чем дело. Оказалось одна из внешних функций генерировала исключение отличное от Error, а у меня исключения обрабатывались следующим образом.
try
{
...

...
}
catch(Error& e)
{
...

...
}
в итоге ошибка не обрабатывалась. Исправил на

try
{
...

...
}
catch(Error& e)
{
...

...
}
catch(...)
{
...

...
}
теперь все ок.