Date: Sat, 08 May 2021 07:10:55 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 255698] dlerror() returns non-NULL after a successful call to dlopen()/dlsym() Message-ID: <bug-255698-227@https.bugs.freebsd.org/bugzilla/>
index | next in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255698 Bug ID: 255698 Summary: dlerror() returns non-NULL after a successful call to dlopen()/dlsym() Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: astralblue@gmail.com dlerror() used to return NULL after a successful call to other dl family of functions, such as dlopen() and dlsym(). Starting recently, dlerror() started returning non-NULL message after such successful calls. The message is initially an empty string, or an error message most recently seen—even if the most recent dlXXXX() call was successful. Test program: #include <dlfcn.h> #include <stdio.h> #define PRINT_DLERROR() do { \ char const *err = dlerror(); \ printf("dlerror()=%p", err); \ if (err) printf(" (%s)", err); \ printf("\n"); \ } while (0) void test_dlopen(char const *path) { void *handle = dlopen(path, RTLD_NOW); printf("dlopen(%s, RTLD_NOW)=%p\n", path, handle); PRINT_DLERROR(); PRINT_DLERROR(); if (handle) dlclose(handle); } int main() { PRINT_DLERROR(); PRINT_DLERROR(); test_dlopen("/foobar.so"); test_dlopen("/usr/lib/libm.so"); return 0; } Expected result (taken on a 12.2-RELEASE-p2 jail, note dlerror() returns NULL upon a successful dlopen()): dlerror()=0x0 dlerror()=0x0 dlopen(/foobar.so, RTLD_NOW)=0x0 dlerror()=0x8002296c0 (Cannot open "/foobar.so") dlerror()=0x0 dlopen(/usr/lib/libm.so, RTLD_NOW)=0x80022e800 dlerror()=0x0 dlerror()=0x0 Actual result (taken on a -CURRENT system, built from main branch commit 34abb05be77a32a2b2673fb4b85eaa53a3d1446e, note dlerror() returns non-NULL on the first dlerror() call, even after a successful dlopen() and also before the first dlopen(), also note the dlerror() message after a successful dlopen() is from the previous failure): 34abb05be77a32a2b2673fb4b85eaa53a3d1446e -- You are receiving this mail because: You are the assignee for the bug.help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-255698-227>
