Поймать sigsegv в других общих библиотеках (система плагинов)

Я написал систему плагинов (основанную на общих библиотеках, которые я загружаю / выгружаю с dlopen/dlclose), который работает довольно хорошо.

Моя проблема в том, что если один из плагинов (библиотек) содержит внутреннюю ошибку, которая является фатальной для всего выполнения (например, допустим, какое-то нарушение сегментации), вся программа падает.

Я бы хотел этого избежать. Я знаю, что есть возможность ловить такие сигналы, как SIGSEGVsignal.h Я думаю). Но мне интересно, действительно ли это правильный подход в этом случае.

Также моя программа многопоточная. И поэтому я должен знать, какой плагин (или, по крайней мере, какой поток) генерировал ошибку.

На самом деле я просто хочу перезагрузить библиотеку в случае фатальной ошибки (или полностью выгрузить ее после истечения времени ожидания). Что такое "стандартный" способ сделать это?

0 ответов

Другие вопросы по тегам