Sujet : Re: The naive reverse reality check (Was: Is Scryer Prologs failure measurable?)
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : comp.lang.prologDate : 11. Aug 2024, 14:03:38
Autres entêtes
Message-ID : <v9a9ar$136g9$1@solani.org>
References : 1 2 3 4 5
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.18.2
Another prolog system which succumbs to
the bomb.p test case:
$ ulimit -m 2000000
$ ulimit -v 2000000
$ ./tpl -v
Trealla Prolog (c) Infradig 2020-2024, v2.55.18
$ ./tpl
?- ['bomb.p'].
?- foo.
throw(error(resource_error(memory),app/3)).
But on my side not everything is joy
that makes us unique. The matter is
difficult to adjust:
with Machine.GC_MAX_INFERS = 200000 it crashes:
/* Dogelog Player for Java */
?- foo.
Error: Execution aborted because out of memory.
with Machine.GC_MAX_INFERS = 100000 it does not crash:
/* Dogelog Player for Java */
?- foo.
%%% I can go for lunch and come back, it still runs.
How can I find the right value for GC_MAX_INFERS ?
Call a witch doctor and ask his oracle bones?
Mild Shock schrieb:
The test case that crashes all these new
Prolog systems, is for example this one.
It still crashes Scryer Prolog:
$ ulimit -m 2000000
$ ulimit -v 2000000
$ target/release/scryer-prolog -v
v0.9.4-135-g7cfe8ee5
$ target/release/scryer-prolog
?- [user].
app([], X, X).
app([X|Y], Z, [X|T]) :- app(Y, Z, T).
garbage(0, [0]) :- !.
garbage(N, L) :- M is N-1, garbage(M, R), app(R, R, L).
foo :- garbage(12,_), foo.
?- foo.
memory allocation of 2147483648 bytes failed
Aborted
The above preferably runs indefinitely. For
example SWI-Prolog can run it indefinitely.
It also crashes other Prolog systems:
$ ~/go/bin/1pl
Top level for ichiban/prolog v1.2.1
This is for testing purposes only!
See https://github.com/ichiban/prolog for more details.
Type Ctrl-C or 'halt.' to exit.
?- ['bomb.p'].
true.
?- foo.
runtime: out of memory:
cannot allocate 4194304-byte block (802816000 in use)