Не могу загрузить больше объекта со статическим TLS
У меня есть приложение, которое используетdlopen()
загрузить дополнительные модули. Приложение и модули построены на Ubuntu 12.04 x86_64 с использованием gcc 4.6, но для архитектуры i386. Затем двоичные файлы копируются на другую машину с точно такой же ОС и работают нормально.
Однако если они скопированы в Ubuntu 12.04 i386, то некоторые (но не все) модули не смогут загрузить следующее сообщение:
dlopen: cannot load any more object with static TLS
Я подозреваю, что это вызвано использованием__thread
переменные. Однако такие переменные не используются в загруженных модулях - только в самом модуле загрузчика.
Может ли кто-нибудь предоставить дополнительную информацию, в чем может быть причина?
Я уменьшаю количество__thread
переменные и их оптимизация (с-ftls-model
и т.д.), мне просто любопытно, почему это не работает напочти та же система.