Файл библиотеки отображается в памяти при загрузке (обычно при загрузке исполняемого файла, но библиотеки также можно загрузить позже с помощью dlopen()
). Фактические страницы файла затем загружаются по требованию по мере необходимости.
Перезапись файла приведет к обновлению страниц из сопоставленного файла MAP_SHARED
(который является большинством из них) новым содержимым. Это то, что вызывает ошибки сегментации. Не делайте этого - вместо этого удалите существующий файл .so, затем запишите новый вместо него.