mirror of
https://github.com/nomic-ai/gpt4all.git
synced 2024-10-01 01:06:10 -04:00
dlhandle: prevent libs from using each other's symbols (#977)
use RTLD_LOCAL so that symbols are *only* exposed via dlsym without this all symbols exported by the libs are available for symbol resolution, resulting in different lib versions potentially resolving *each other's* symbols, causing incredibly cursed behavior such as https://gist.github.com/apage43/085c1ff69f6dd05387793ebc301840f6
This commit is contained in:
parent
f71d8efc71
commit
c4319d2c8e
@ -18,7 +18,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
Dlhandle() : chandle(nullptr) {}
|
Dlhandle() : chandle(nullptr) {}
|
||||||
Dlhandle(const std::string& fpath, int flags = RTLD_LAZY) {
|
Dlhandle(const std::string& fpath, int flags = RTLD_LAZY | RTLD_LOCAL) {
|
||||||
chandle = dlopen(fpath.c_str(), flags);
|
chandle = dlopen(fpath.c_str(), flags);
|
||||||
if (!chandle) {
|
if (!chandle) {
|
||||||
throw Exception("dlopen(\""+fpath+"\"): "+dlerror());
|
throw Exception("dlopen(\""+fpath+"\"): "+dlerror());
|
||||||
|
Loading…
Reference in New Issue
Block a user