Nie można załadować więcej obiektu ze statycznym TLS
Mam aplikację, która używadlopen()
załadować dodatkowe moduły. Aplikacja i moduły są zbudowane na Ubuntu 12.04 x86_64 przy użyciu gcc 4.6, ale na arch. I386. Pliki binarne są następnie kopiowane na inny komputer z dokładnie tym samym systemem operacyjnym i działają poprawnie.
Jeśli jednak zostaną skopiowane do Ubuntu 12.04 i386, niektóre moduły (ale nie wszystkie) nie ładują się z następującym komunikatem:
dlopen: cannot load any more object with static TLS
Podejrzewam, że jest to spowodowane użyciem__thread
zmienne. Jednak takie zmienne nie są używane w załadowanych modułach - tylko w samym module ładującym.
Czy ktoś może podać jakieś dodatkowe informacje, co może być przyczyną?
Zmniejszam liczbę__thread
zmienne i ich optymalizacja (za pomocą-ftls-model
itp.), jestem po prostu ciekawy, dlaczego nie działaprawie ten sam system.