On Tue, 6 Oct 2020, Vincent Lefevre wrote:

On 2020-10-06 11:51:29 +0200, Marc Glisse wrote:
On Tue, 6 Oct 2020, Vincent Lefevre wrote:

On 2020-10-06 04:41:42 +0100, Colin Caine wrote:
This is used by Julia to raise an OutOfMemory exception rather than having
the Julia process itself abort.

Others on stackoverflow, etc, have experienced similar problems with
undesired aborts(), so this patch would probably be useful to a variety of
users. (see:
https://github.com/JuliaLang/julia/issues/8286#issuecomment-323500953)

More information is available here and in the linked issues and PRs:
https://github.com/JuliaLang/julia/pull/31215

Since the function could have allocated memory for intermediate
computations, how do you avoid memory leaks?

You would need something like

https://gmplib.org/list-archives/gmp-devel/2014-December/003868.html

But this is only for C++

Yes, that's for people willing to compile GMP with a C++ compiler. I don't think that's such a big issue, except on windows.

and only for temporary memory (while normal allocation seems to be sometimes used, like in mpz/mul.c with "wp = __GMP_ALLOCATE_FUNC_LIMBS (wsize);").

With a single allocation, quite often you won't leak, since either it succeeds and you are fine, or it fails and you don't have any new memory to leak. But yes, making it work 100% would require auditing a lot of code...

--
Marc Glisse
_______________________________________________
gmp-bugs mailing list
gmp-bugs@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-bugs

Reply via email to