История изменений
Исправление
ckotinko,
(текущая версия)
:
undefined хватает и без компилятора.
пусть есть каталог dist
в нем есть dist/launcher - выполняемый файл
он линкуется с dist/lib/libcore.so.1
launcher запускает плагины из dist/plugins
плагины линкуются в dist/lib/libcore.so.1 и dist/lib/libwidgets.so.1 и в них указан rpath=$ORIGIN/../lib
все библиотеки подгружаются. казалось бы, в чем же может быть проблема? почему вызов из libplugin1.so в libwidgets.so.1 приводит к переходу по рандомному адресу с вероятностью ~30% хотя я даже launcherу сказал линковаться с libwidgets.so.1? то есть либа точно загружена и я её вижу в info share в gdb. почему так. один поток, гонок нет. адреса библиотек не меняются - проверил в gdb. но 30% вероятности краха потому что .got.plt не заполнен вообще. там мусор лежит. гонка в один поток - с кем?
почему в почему если мы кладем плагины в dist/lib, а в plugins делаем симлинки, все работает как надо?
а тут еще разрабы компилятора с идиотским желанием «оптимизировать». так ёпта. это - не оптимизация, от неё ноль приросту кпд. а там где реально нужна скорость, там обращения в память долбят - я уже приводил ссылки на исследования. нет смысла дрочить UB - не на нем тормозит.
Исходная версия
ckotinko,
:
undefined хватает и без компилятора.
пусть есть каталог dist
в нем есть dist/launcher - выполняемый файл
он линкуется с dist/lib/libcore.so.1
launcher запускает плагины из dist/plugins
плагины линкуются в dist/lib/libcore.so.1 и dist/lib/libwidgets.so.1 и в них указан rpath=$ORIGIN/../lib
все библиотеки подгружаются. казалось бы, в чем же может быть проблема? почему вызов из libplugin1.so в libwidgets.so.1 приводит к переходу по рандомному адресу с вероятностью ~30% хотя я даже launcherу сказал линковаться с libwidgets.so.1? то есть либа точно загружена и я её вижу в info share в gdb. почему так. один поток, гонок нет. адреса библиотек не меняются - проверил в gdb. но 30% вероятности краха потому что .got.plt не заполнен вообще. там мусор лежит. гонка в один поток - с кем?
почему в почему если мы кладем плагины в dist/lib, а в plugins делаем симлинки, все работает как надо?
а тут еще разрабы компилятора с идиотским желание «оптимизировать». так ёпта. это - не оптимизация, от неё ноль приросту кпд. а там где реально нужна скорость, там обращения в память долбят - я уже приводил ссылки на исследования. нет смысла дрочить UB - не на нем тормозит.