|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Andrey Kotrekhov 2:5020/400 07 Jan 2005 03:05:29 To : All Subject : [q] баг или я глючу -------------------------------------------------------------------------------- Добрый день всем! Была прога, никого не трогала, работала c STL С переходом на FreeBSD-5.3 начала падать. Поиск проблемы привел вот к такому простому тестику, который падает непонятно почему. Причем не падает, когда приложение собрано с -O2 и падает, когда не задаешь -О вообще. При порождении единственного треда падает гораздо раньше, если Run() выполняем в main тогда живет дольше, но падает все равно регулярно при одном и том же кол-ве итераций. Падает при задании несуществующего ключа в map, при этом вызывается исключение, которое перехватывается. При существующем ключе все живет. Где грабли? $ gcc -v Using built-in specs. Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 3.4.2 [FreeBSD] 20040728 Тестилось на FreeBSD 5.3 5.2.1 - падает. на линуксе с gcc 3.3.3 не падает. ============================================= #include <pthread.h> #include <map> #include <string> #include <iostream> #include <stdexcept> using namespace std; class B { private: int a; public: B() { a=1; } int size() { return 2; } }; class A : public map<string, B> { public: virtual B& operator[] (const string& k) throw (int); }; B& A::operator[] (const string& k) throw (int) { iterator point; if ((point=find(k))==end()) { throw int(1); } return point->second; } A aa; void * Run(void *n) { int i=0; //struct timespec rqtp = {0, 1000}; while (true) { try { cout << "xxx=" << aa["xxx"].size() << endl; } catch(...) { cout << "exception" << endl; } //nanosleep(&rqtp, NULL); try { cout << i++ << endl; } catch(...) { cout << "exeption in cout" << endl; } } return NULL; } int main() { aa.insert(make_pair("aaa",B())); aa.insert(make_pair("bbb",B())); pthread_t pt; pthread_create(&pt, NULL, Run, NULL); pthread_join(pt, NULL); // Run(NULL); } -- Андрей --- ifmail v.2.15dev5.3 * Origin: Alkar Teleport News Server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/13297b6787a80.html, оценка из 5, голосов 10
|