Re: Segmentation fault
От: Ekin  
Дата: 02.06.04 01:11
Оценка:
Здравствуйте, alexora, Вы писали:

A>Я вот написал софтину, которая чекает мыла на валидатность. Она у меня тредовая. Кол. тредов указываешь. Каждый тред считывает определенное кол. бай с файла и чекает мыла на MX записи. Чекаю я через
res_search
функцию. Тестирование я проводил при 500 тредах, каждый тред считывал по 10кб данных с файла. Прикол в том, что если закоментировать кусок кода, который чекает на MX записи, то все пашет (файл при єтом парсится тредами и переписывается в другой). Если оставить этот кусок кода, то на середине проверки вываливается Segmention fault Как это понять ?


A>Вот весь код :



A>[ccode]

A>#include <sys/types.h>
A>#include <stdio.h>
A>#include <pthread.h>
A>#include <g++/vector>
A>#include <g++/string>
A>#include <netinet/in.h>
A>#include <arpa/nameser.h>
A>#include <resolv.h>
A>#include <g++/iostream>
A>#include <sys/stat.h>
A>#include <unistd.h>
A>#include <g++/algorithm>


A>#define MAXTHREADCOUNT 500

A>#define MINTHREADCOUNT 1
A>#define STEPPOS 10240

For users of C and C++ compilers without support for the -pthread switch,
you must ensure that the C preprocessor symbol _REENTRANT is defined before
including any system header file. One way to accomplish this is to compile
the application as follows:

cc -c myprog.c -D_REENTRANT

То есть тебе нужны thread-safe версии библиотек. Вот такие три строки _перед_ всеми инклюдами тебе помогут
#ifndef _REENTRANT
#define _REENTRANT
#endif // _REENTRANT
или действительно задай этот define в опциях компиляции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.