У меня довольно сложный код, который отлично работает на AIX, но ядро демпинга в Solaris. Я старался сделать его максимально упрощенным.Ядро дампа при попытке получить доступ к указателю на структуру, переданному функции в solaris
Ниже глобальная structrue, имеющий указатель на функцию
custom_struct_1 my_struct1 = {
intValue1, intValue2, intValue3, func3
};
Это вторая структура, имеющая указатель на первый как поле
custom_struct_2 my_struct2 = {
intValue1, intValue2, &my_struct1
};
ниже поток
func1(){
custom_struct *my_dumping_struct;
memset(my_struct, 0, sizeof(my_struct);
func2(my_dumping_struct, &my_struct2);
}
func2(custom_struct *my_dumping_struct, custom_struct_2 *my_struct2){
custom_struct1 *my_cust1;
// Some conditions go here
my_cust1 = &my_struct2->custom_struct_1;
my_cust1->struct_func(my_dumping_struct);
}
func3(custom_struct *my_dumping_struct)
{
// Here when trying to access any field of the passed structure
// a core dump is occuring
if(my_dumping_struct->intValue1 == 0)
{
....
}
}
Я ценю любую помощь. Это сводит меня с ума. Я пытался Подуслуга вещи, как определение демпинговой структуры без указателя на первом, используя
memset(&my_dumping_structre, 0, sizeof(my_dumping_struct))
и передавая его со ссылкой на другие функции, которые она до сих пор дампы.
EDIT
Определение структуры, как показано ниже:
struct custom_struct {
int intValue1;
int intValue2;
};
struct custom_struct_1 {
int intValue1;
int intValue2;
int intValue3;
int (*struct_func)(custom_struct *my_struct);
};
struct custom_struct_2 {
int intValue1;
int intValue2;
struct custom_struct_1 *my_struct;
};
Благодаря
Поскольку Вы отправили почти все остальное, я не думаю, что вы могли бы разместить определения 'custom_struct_1',' custom_struct_2' и 'custom_struct' ?? * В вопросе пожалуйста; ** не ** как комментарий *. Пока вы на нем, код, который * компилирует *, будет приятным прикосновением. Как написано 'func1()' имеет две неопределенные переменные и использует необъявленные типы. 'func2()' и 'func3()' не лучше. Желательно [SSCCE] (http://www.sscce.org).Не «рассказывайте» нам о вашем коде; просто * отправьте его *, вместе с тем, что вы ожидаете, что вы получаете, и то, что вы спекулируете, ошибочно. – WhozCraig
Я предполагаю, что вы правы, собирался это сделать :) – wassim
@WhozCraig извините, не могу разделить весь код, даже если бы я мог потребоваться возраст, чтобы его поднять, каждая структура определена в другом заголовочном файле и имеет намного больше элементов, чем описано. – wassim