Description of problem: libaio 0.3.98 and above return -1 and set errno upon return from the io_* system calls. libaio 0.3.96 and below returned -errno. This is an ABI breakage that affects all previously built users of the library, as no symbol version or .so version has changed. Version-Release number of selected component (if applicable): 0.3.98 and above How reproducible: Every time. All users see errors of EPERM (-1). Additional info: The right answer would have been to bump the .so version, or better, leave the non-errno-hampered calling convention.
I will address this as soon as possible. Thanks.
Fair enough, but please let us in on the discussion regarding this. We have to deal with Oracle compatibility as well.
I've just built a new version of libaio into fc3 which should address this issue: libaio-0.3.102-1. You can get this version and build it from CVS if you want to test it early: cvs -d :pserver:anonymous.com:/usr/local/CVS co libaio I built and did simple regression tests on i386, x86_64, ia64, s390, s390x, ppc64pseries. To be clear, the agreed-upon solution was to change back to the old behaviour of returning -errno.
Oracle, is this new version of the libaio packages working for you in your testing?
libaio-0.3.102-1 is included in the latest RHEL4 beta trees, so I'm closing this bug due to not hearing anything back from Oracle. If an issue still remains, please reopen this bug.
It would appear that the soname for the package has changed. This means that the file-based dependancies for the package list libaio.so.1.0.0 instead of libaio.so.1 This causes problems both for installing packages that have a find-requires dependancy on libaio.so.1 and for running programs that have libaio.so.1 in their dynamic headers. Any program compiled against the older version will have fun issues.
Opened bug 145581 for RHEL 4.
I've tested programs built and linked against libaio-0.3.96-5 on a system running libaio-0.3.102-2, and they run fine. Changing the soname was an error on my part, to be sure. However, please elaborate on what problems this will cause for you. What is a find-requires dependency? Can this issue be fixed with a Provides line in the spec file? Thanks for your enduring patience on this matter.
Well, Thorsten from Novell says that a program linked against libaio-0.3.9x from SLES8 fails to work with libaio-0.3.102. I've not checked fully on what the reason is, given that I haven't had time to test. I'll make sure that I follow up, because I'm the one playing ping/pong between the two vendors to make sure that libaio behavior is consistent. As far as the find-requires bit goes, I'm talking about RPM file-based dependancies. Any RPM package that depends on libaio.so.1 (so generated from RPM's find-requires script seeing libaio-0.3.9x) will perhaps have a problem when libaio-0.3.102 only provides libaio.so.1.0.0.
A fix for this has been committed to CVS and will be available in the near future. I'll update the bug when the fixed package is pushed.
An erratum has been filed. Packages versioned 0.3.103-3 and later have this fix.