Этот тип ситуации является зависящим от реализации, и следовательно это потребует поставщику определенного механизма для захвата. С Microsoft это включит SEH, и *отклоняют, включит сигнал
В целом, хотя ловля исключения Нарушения прав доступа очень плохая идея. Нет почти никакого способа восстановиться с исключения AV, и пытающийся сделать так просто приведет к тяжелее для нахождения ошибок в программе.
Когда вы говорите «до тех пор, пока предыдущий вызов не был завершен, прежде чем функция вызывается снова», я могу только предположить, что у вас есть несколько потоков, вызывающих из C ++ в Python. Python не является потокобезопасным, так что это может привести к сбою!
Прочтите о глобальной блокировке интерпретатора (GIL) в руководстве по Python. Возможно, вам помогут следующие ссылки:
GIL упоминается в Википедии:
Спасибо за вашу помощь!
Да, вы правы, есть несколько потоков C. Никогда не думал, что мне понадобится мьютекс для самого интерпретатора - GIL для меня совершенно новая концепция (и ни разу не упоминалась во всем руководстве). Каждый поток создает свою структуру данных, получает блокировку и затем освобождает ее, как показано в справочнике.
Работает так, как должно, но при вызове Py_Finalize () перед завершением процесса я получаю segfault .. любые проблемы, просто оставив его ?