-
Notifications
You must be signed in to change notification settings - Fork 262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ABI break in CHOLMOD 5.1.0 without SOVERSION bump #741
Comments
Oops. My mistake. What's the least disruptive way to resolve this, in your opinion? I could simply call CHOLMOD v6. It has undergone a lot of changes with the addition of single precision support (but that was what v5 was supposed to indicate). I could #ifdef out the blas_dump variable, since it's only meant for diagnosing performance issues in the BLAS. It could change to
and then BLAS_DUMP would not be used in production, just development. If this is the only ABI-breaking change, then I could call this CHOLMOD 5.1.2. Which option is least disruptive, do you think? |
Hi. If the ABI change could be un-done (with an
|
yes, turning it on would break the ABI, but the case is not meant to be used in production, just in development. There is no cmake way to set BLAS_DUMP, for example. Yes, I'd release a 7.5.2 perhaps, with this bug fix. This could be considered a bug introduced in 7.4.x and fixed in 7.5.2, and thus versions 7.4.x through 7.5.1 would still have the bug. If anyone is using 7.4.x to 7.5.1, and they notice the ABI break, they could just fix that bug by upgrading to 7.5.2. I should have an ABI-checker myself, I suppose. I try to be careful but sometimes I slip up. |
I mean adding the #idef BLAS_DUMP, as the least-churn option. |
Hi. I just ran the automated tool to compare libcholmod in 7.3.1 vs 7.5.1. I downloaded
The results: https://notes.secretsauce.net/cholmod5-7.3.1+dfsg-2_to_7.5.1+dfsg-1-compat_report.html So it flagged the issue we're talking about (albeit with a "Low" severity, which I disagree with), and found no other problems. So adding the |
Note that my last point was precisely to stress that there is no fundamental reason why bumping the SOVERSION to 6 should imply bumping the major version number of CHOLMOD to 6. Many libraries disconnect the two, because they are distinct concepts. To say it otherwise, one possibility would be to have CHOLMOD 5.1.2 ship
This option is fine with me, as long as you can ensure that there will never be a reason to define |
Yes -- that's exactly what I can do. |
Thanks for that report. The changes of int mode to int values is upward-compatible with 7.3.1. Some of the functions in 7.3.1 only handled real matrices (not complex), and values=0 was pattern-only, and nonzero was "do the values". If the matrix was complex in 7.3.1, an error code was returned (complex not supported). Now, mode=0 means pattern only (as before), mode=1 means "do the values but not complex conjugate", and mode=2 means "do the values, and use the complex conjugage if complex". Other changes of mode -> values were just to make this parameter consistent in its name. Usage is unchanged. The restrict keyword was removed because it causes problems with an older version MS VIsual Studio, if I recall. The behavior of that method is not modified. So this is safe. The only change is blas_dump, and I can This commit should fix the problem: 53f0dc4 I also will need to revise the top-level ChangeLog for Suitesparse 7.5.2. |
Thanks for fixing the issue. I have already uploaded the patch to Debian, without waiting for the new release, because it was somewhat urgent (many packages broken). |
Does SuiteSparse 7.6.0.beta1 look OK? I'd like to post it soon since this ABI break is an important thing to fix, but it would be best to get your feedback first. |
Fixed in SuiteSparse 7.6.0. Thanks again for catching this. |
In commit 0b8b9a7, the field
blas_dump
was added to the structurecholmod_common
. The size of the structure has thus been modified.This is an ABI break. As a consequence, the SOVERSION of libcholmod should have been bumped (i.e.
libcholmod.so.5
should have been renamedlibcholmod.so.6
).This unhandled ABI break is causing crashes in various Debian packages, see http://bugs.debian.org/1061049
As a reminder, the SOVERSION should be increased whenever there is a backward-incompatible change in the application binary interface (ABI), i.e. whenever a program compiled against the old version of the library needs to be recompiled in order to run against the new version of the library. Also note that even though in most SuiteSparse libraries the major version number and the SOVERSION are identical, the two are fundamentally different concepts. For example, one has to increase the SOVERSION when a minor and obsolete exported function is removed, but this is arguably not a change significant enough to warrant a major version bump; conversely, adding many new functions can justify a major version bump, but this should not lead to a SOVERSION bump if nothing is broken in the existing ABI.
The text was updated successfully, but these errors were encountered: