Исходный код выглядит так: < /p>
Код: Выделить всё
if (cb != NULL) {
cb(arg);
}
/* continue */
: test %rax,%rax
: je 0xNNN
: mov %rbp,%rdi
: callq *%rax 0xNNN: mov %rbp,%rdi
< /code>
Мы также проверили информацию регистрации и получили: < /p>
(gdb) info registers rax
rax 0x0 0
(gdb) info registers rip
rip 0x0 0x0
< /code>
Так что звучит так, как будто он сбои при вызове функции с помощью нулевого адреса, но нулевая проверка прямо перед вызовом. Логика кода может быть выполнена на всех развернутых экземплярах, но она всегда вылетает на 2 из них. Я никогда не видел подобную проблему в течение десятилетий в качестве разработчика C. У нас заканчиваются идеи, и, пожалуйста, проливайте некоторые огни на это на случай, если у вас есть похожий опыт.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... -c-program
Мобильная версия