У меня есть следующая структура:
struct sys_config_s
{
char server_addr[256];
char listen_port[100];
char server_port[100];
char logfile[PATH_MAX];
char pidfile[PATH_MAX];
char libfile[PATH_MAX];
int debug_flag;
unsigned long connect_delay;
};
typedef struct sys_config_s sys_config_t;
У меня также есть функция, определенная в статической библиотеке (давайте назовем ее A.Lib):
sys_config_t* sys_get_config(void)
{
static sys_config_t config;
return &config;
}
У меня есть программа (давайте назовем это B ) и динамическая библиотека (давайте назовем ее). Оба B и C ссылки с A.Lib. При выполнении B открывается C через DLOPEN ()
, а затем получает адрес в функцию C Func ()
по вызову DLSIM ()
.
void func(void)
{
sys_get_config()->connect_delay = 1000;
}
Приведенный выше код является телом функции функции CS ()
, и она создает неисправность сегментации при достижении. SegFault происходит только при запуске GDB
.
Почему это происходит?
Редактировать: Создание SYS_CONFIG_T CONFIG
Глобальная переменная не помогает.