Source: sbd Source-Version: 1.5.2-1 Severity: serious Tags: patch upstream Hi!
For the time64 transition I've done a local SONAME bump. This will make this package FTBFS (once the mass binNMUs are triggered) due to its test suite hardcoding the libaio SONAME for a dlopen() call. Because the package is already explicitly linking against -laio (which I guess also means there's a missing Build-Depends here), we are guaranteed to have libaio.so available, so we can use that to avoid hardcoding the SONAME. Of course dlopen()ing a shared library like this is dangerous as the code might use the wrong ABI and that might go unnoticed at build time, so perhaps it might also be worth investigating in the future whether the dlopen is really necessary at all (the test case is already being linked also against -laio). The attached patch fixes the build for me with the new libaio. Thanks, Guillem
Description: Do not hardcode libaio SONAME The SONAME might change, and then the dlopen() fails. This just happened now as part of the time64 transition. The package is already linking explicitly against -laio, thus libaio.so will be guaranteed to be present, so instead of hardcoding the current SONAME at this point in time, simply use libaio.so. Author: Guillem Jover <guil...@debian.org> Last-Update: 2024-03-05 --- tests/sbd-testbed.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/tests/sbd-testbed.c +++ b/tests/sbd-testbed.c @@ -154,9 +154,9 @@ init (void) orig_fopen = (orig_fopen_f_type)dlsym_fatal(RTLD_NEXT,"fopen"); orig_fclose = (orig_fclose_f_type)dlsym_fatal(RTLD_NEXT,"fclose"); - handle = dlopen("libaio.so.1", RTLD_NOW); + handle = dlopen("libaio.so", RTLD_NOW); if (!handle) { - fprintf(stderr, "Failed opening libaio.so.1\n"); + fprintf(stderr, "Failed opening libaio.so\n"); exit(1); } orig_io_setup = (orig_io_setup_f_type)dlsym_fatal(handle,"io_setup");