Anonymous | Login | Signup for a new account | 2024-11-21 22:02 MSK |
Main | My View | View Issues | Change Log | Roadmap | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||
0000813 | [ALGLIB] Optimization | minor | always | 2018-04-24 11:06 | 2018-04-27 16:06 | ||
Reporter | rmanthorpe | View Status | public | ||||
Assigned To | SergeyB | ||||||
Priority | normal | Resolution | fixed | ||||
Status | resolved | Product Version | 3.13.0 | ||||
Summary | 0000813: FIXED: minlmoptimize enters an infinite loop when fvec throws an exception on Windows x64 | ||||||
Description |
In recent versions of MSVC setjmp/longjmp used by ALGLIB internally interferes with throw/catch also used by ALGLIB to catch user exceptions. MSVC does not support longjmp() out of catch() clause (even though jump itself seems to be legitimate). Code starts looping forever. New version of ALGLIB exception handling code better separates these two strategies, so no eternal loop takes place. === ORIGINAL MESSAGE =================================================== The example below should exit with status 1 but never completes on Windows x64 using Visual Studio 2015 Update 3. It works as expected on Windows x86 and Linux. test.cpp --------------------------------------------------------------- #include "optimization.h" void callback(const alglib::real_1d_array&, alglib::real_1d_array&, void*) { throw 0; } int main() { alglib::minlmstate state; alglib::real_1d_array x; x.setlength(1); alglib::minlmcreatev(1, x, 1e-5, state); try { alglib::minlmoptimize(state, &callback); } catch(...) { return 1; } return 0; } |
||||||
Additional Information | |||||||
Programming language | C++ | ||||||
Attached Files | |||||||
|
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |