13
$\begingroup$

The following is a confirmed bug [CASE:3846875] that turned up in the prerelease 11.1.0 and is not solved in the official release.

This is a small example. Execute the following commands in Mathematica 11.0 or earlier.

Needs["CCodeGenerator`"]
Needs["CompiledFunctionTools`"]

test=Compile[{{n,_Integer}},Module[{n1,n2,lst},
  n1=Floor[Sqrt[n]];While[n1 Floor[n/n1] <n, n1=n1-1]; n2=Floor[n/n1];
  lst=Flatten[Table[Flatten[Table[{i+i0 n1,j+j0 n2}, 
    {i,1,n1},{j,1,n2}],1], {i0, 0, n2-1}, {j0,0,n1-1}],1];
  lst]]

(* CompiledFunction[Argument count: 1 Argument types: {_Integer} ] *)

LibraryGenerate[test,"test110"]
(* C:\Users\Fred Simons\AppData\Roaming\Mathematica\SystemFiles\LibraryResources\Windows-x86-64\test110.dll *)

Quit and restart the kernel.

test = LibraryFunctionLoad["test110", "test110",{_Integer},{_Integer,3}];

test[3]

(* {{{1,1},{1,2},{1,3}},{{2,1},{2,2},{2,3}},{{3,1},{3,2},{3,3}}} *)

So it works fine.

Now start Mathematica 11.1 and try to evaluate the last two commands. The kernel silently crashes.

So at least this dll, generated by an older version of Mathematica, cannot be used in the latest release.

The converse is true as well. When we construct this dll with Mathematica 11.1, it cannot be used in 11.0.

For me, this is a pretty serious bug. I have a rather large application, that due to the fact that is uses some dll's generated by older versions of Mathematica, now does not run any more.

$\endgroup$
  • $\begingroup$ Same on linux 64 bit. $\endgroup$ – b.gates.you.know.what Mar 22 '17 at 21:12
  • $\begingroup$ But older DLL's never worked with newer Mathematica versions. E.g., I had to keep two DLL versions when supporting M9 and M10 some time ago. The best ist to only support always the latest Mathematica version ... $\endgroup$ – Rolf Mertig Apr 15 '17 at 11:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.