Return error when handle is null in GetSymbolFromLibrary instead of using the RTLD_DEFAULT behavior.
Fix an issue where tf-nightly (w/ gpu support) segfault at import due to infinitely recursion of __cudaRegisterFatBinary.
Fix https://github.com/tensorflow/tensorflow/issues/33852.
PiperOrigin-RevId: 277833490
Change-Id: I75f7dfe94c0259124888a62fa815b0b1731415ef
diff --git a/tensorflow/core/platform/default/load_library.cc b/tensorflow/core/platform/default/load_library.cc
index 8fad535..eaa68e6 100644
--- a/tensorflow/core/platform/default/load_library.cc
+++ b/tensorflow/core/platform/default/load_library.cc
@@ -33,7 +33,12 @@
Status GetSymbolFromLibrary(void* handle, const char* symbol_name,
void** symbol) {
- *symbol = dlsym(handle, symbol_name);
+ // Check that the handle is not NULL to avoid dlsym's RTLD_DEFAULT behavior.
+ if (!handle) {
+ *symbol = nullptr;
+ } else {
+ *symbol = dlsym(handle, symbol_name);
+ }
if (!*symbol) {
return errors::NotFound(dlerror());
}