-
Notifications
You must be signed in to change notification settings - Fork 124
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
icb_arpack_cpp: testsuite fails on i386 #123
Comments
For reference, here's the backtrace of the crash and a bit more of info:
Note how Also, |
Interesting. Does it only fail on a 32 bit build? And it also fails for the C test? |
@dbeurle For the C++ case it seems I've found the culprit: the passage of For x86_64, I guess, this wouldn't crash (didn't check though) because floating-point parameters are passed by value in registers, so there'd be no bad stack accesses, although the results will likely be garbage (rings a bell: why does the test not find this?) |
In the C case it's also passed by value right? extern void zneupd_c(bool rvec, char * howmny, int * select,
double _Complex * d, double _Complex * z, int ldz, double _Complex sigma, double _Complex * workev,
char * bmat, int n, char * which, int nev,
double tol, double _Complex * resid, int ncv, double _Complex * v,
int ldv, int * iparam, int * ipntr, double _Complex * workd,
double _Complex * workl, int lworkl, double _Complex * rwork, int * info); I'm not 100% sure. This means that the bindings explicitly depends on the size of the parameters passed to it? If so, both the C bindings and the C++ need to pass by pointer for this value? Non-zero shifts ( |
No, this means the prototype is simply wrong: |
Okay, this is fairly easy to fix then? Do we have a test to check this before it's pushed again? |
@sylvestre You can go ahead and assign this to me, I'll do this in my lunch break if that works for you. |
The following patch fixes the segmentation faults in the C and C++ tests, but the C test still fails for some reason:
|
Hmm, the C test fails with this patch due to the following symptoms: in |
It should be possible to change P.S <3 the east const. |
Is there a problem with the setting of complex EDIT: No this works fine. |
According to cppreference,
And the implicit conversions are mostly intuitive enough so that e.g. |
True - I checked this myself and updated my comment (a little too late). Do the ARPACK error codes give you hint? |
fyi, a bunch of other archs are failing: |
@sylvestre Have the ISO C bindings been tested before (apart from x86_64)? Is this linked to the introduction of C++ bindings or the C / FORTRAN bindings? |
Nope, 3.6.0 is the first and travis ci only provides amd64 systems... |
Actually, as of cd63660, and one commit before, the segfaults are already there. |
@dbeurle sure, please feel free to fix it :) |
…as Fortran-C bindings expect it This fixes opencollab#123. Both C and C++ tests will no longer crash. But the C test will fail. This might be due to an error in the test itself.
If this was before my time I'm not sure I can fix it -_-. |
@dbeurle No worries, I'm taking care of it. |
@10110111 Just shout out if you need anything from me - I'm not too familiar with FORTRAN / C intricacies. |
OK, the C bindings are actually totally broken. Not only the C prototypes don't completely match the descriptions |
Nice catch - if you get the C bindings running I'll take care of the C++ ones. |
Ok, thanks. |
3.6.0 is back, but 3.6.1 in not in the releases |
I tagged 3.6.1 today and uploaded it in Debian. I opened #128 for the remaining issues |
See: https://buildd.debian.org/status/fetch.php?pkg=arpack&arch=i386&ver=3.6.0-1&stamp=1528229606&raw=0
@dbeurle @fghoussen Rings a bell?
The text was updated successfully, but these errors were encountered: