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,(&gt;)/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 &gt; 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 &gt; 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,(&gt;)/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,(&gt;)/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 &eacute;t&eacute; v&eacute;rifi&eacute; par
<a href=3D"http://www.mailscanner.info/">MailScanner</a>
pour des virus ou des polluriels et rien de
suspect n'a &eacute;t&eacute; trouv&eacute;.
</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==--