LINUX.ORG.RU

История изменений

Исправление 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 - не на нем тормозит.