Re: system_error(cannot_catch_throw(error(existence_error(procedure, (>)/2), findall/3)))
Daniel Diaz <[email protected]> Mon, 14 Sep 2015 09:01:02 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
--===============1813602559804400825==
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Hi,<br>
<br>
Sorry for the late reply<br>
<br>
this is not a bug. With --min-pl-bips only statically referenced
predicates are part of the executable (member/2 is dynamically
called).<br>
To avoid this you can:<br>
<ul>
<li>avoid the use of --min-pl-bips and friends (e.g.
min-bips,...)</li>
<li>explicitely call member/2 (eg. adding a dummy clause: dummy
:- member(_,_).)</li>
<li>use a directive called ensure_linked(member/2).</li>
</ul>
<p>Daniel<br>
</p>
<br>
<br>
Le 14/07/2015 16:34, Gustavo Brown - INCO a =E9crit=A0:<br>
</div>
<blockquote
cite=3D"mid:759DF669DCA94C99A66F2D37B24EE28B@VirtualXP99969"
type=3D"cite">
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
<meta name=3D"GENERATOR" content=3D"MSHTML 8.00.6001.23588">
<style></style>
<div><font face=3D"Arial" size=3D"2">I am getting the following err=
or
when compiling a simple snippet </font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2"><strong>system_error(can=
not_catch_throw(error(existence_error(procedure,(>)/2),findall/3)))</s=
trong></font></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">To reproduce, create a file
(test.pl) with this code:</font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">:-initialization(findall=
_bug).</font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">findall_bug:-<br>
=A0 write(findall_bug),nl,<br>
=A0 findall(Att, (member(Att, [6, 0]), Att > 0), XParmAs),<b=
r>
=A0 write(XParmAs),nl,<br>
=A0 findall(Att, findall_bug1([6,0], Att), ParmAs),<br>
=A0 write(ParmAs),nl,<br>
=A0 write(done),nl,<br>
=A0 !.=A0 </font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">findall_bug1(Parms, Att)=
:-<br>
=A0member( Att, Parms), <br>
=A0Att > 0.</font></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">I usually compile the generate=
d
assembly file with this two steps:</font></div>
<div><font face=3D"Courier New" size=3D"2">=A0 gplc -S test.pl -o t=
est.s</font></div>
<div><font face=3D"Courier New" size=3D"2">=A0 mingw-as - o test.ob=
j
--32 test.s</font></div>
<div><font face=3D"Arial" size=3D"2">and link with MSVC linker.</fo=
nt></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">However, I can reproduce this
using only gplc: </font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2"><strong>gplc --no-top-le=
vel
--min-pl-bips -o test.exe test.pl</strong></font></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">Output of execution is:</font>=
</div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">findall_bug</font></div>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">system_error(cannot_catc=
h_throw(error(existence_error(procedure,(>)/2),findall/3)))</font></di=
v>
<div>=A0</div>
<div><font face=3D"Courier New" size=3D"2">system_error(cannot_catc=
h_throw(error(existence_error(procedure,(>)/2),findall/3)))<br>
[]<br>
[6]<br>
done</font></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">If you compile without <font
face=3D"Courier New">--min-pl-bips</font>, the output is righ=
t</font></div>
<div><font face=3D"Arial" size=3D"2">It seems that the compiler tre=
ats
differently the arithmetic comparison inside findall, and does
not include some library code when using --min-pl-bips (and
also linking directly with MSVC)</font></div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">Using GNU Prolog 1.4.4</font><=
/div>
<div>=A0</div>
<div><font face=3D"Arial" size=3D"2">Regards,</font></div>
<div><font face=3D"Arial" size=3D"2">=A0 Gustavo</font></div>
<div>=A0</div>
<div>=A0</div>
<br>
-- <br>
Ce message a =E9t=E9 v=E9rifi=E9 par
<a moz-do-not-send=3D"true" href=3D"http://www.mailscanner.info/">M=
ailScanner</a>
pour des virus ou des polluriels et rien de
suspect n'a =E9t=E9 trouv=E9.
<br>
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
<br>
<pre wrap=3D"">_______________________________________________
Bug-prolog mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:[email protected]">=
[email protected]</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://lists.gnu.org/mailman/=
listinfo/bug-prolog">https://lists.gnu.org/mailman/listinfo/bug-prolog</a=
>
</pre>
</blockquote>
<br>
<br>--=20
<br>Ce message a été vérifié par
<a href=3D"http://www.mailscanner.info/">MailScanner</a>
pour des virus ou des polluriels et rien de
suspect n'a été trouvé.
</body>
</html>
--===============1813602559804400825==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Bug-prolog mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-prolog
--===============1813602559804400825==--