bug-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with select/5 on AF_INET sockets with Windows 7


From: Fx
Subject: Re: Problem with select/5 on AF_INET sockets with Windows 7
Date: Fri, 20 Feb 2015 19:59:29 +0100

Ok, this is a very little step, but after some adventures with installation i have some news:

Getting source from git reveal two bugs (and something curious maybe):
- impossible to use anonymous git clone , so i fall back with getting the snapshot.
- the source didn’t  contain the ‘configure’ script (i picked it up from the 1.4.4 tar to go on)
- the version is still 1.4.4 (ok it’s not the end of the world).

I installed the MinGW on Windows 7 32 bit, in th standard manner. Fortunately my antivirus didn’t says nothing with the default a.out a.exe.
As si said previously, i took the « configure" file from prolog 1.4.4 source tarball

And last, but not least, the select/5 bug seems to belong to the past on windows (MinGW). I run again the tests wrote in this mailing list, and the
previous error didn’t appear anymore. 

It’s weak for a beta test, but it’s quite a good news. It would be nice if i had time to write some client/server tests, things like that.

Fx


Le 19 févr. 2015 à 20:40, Paulo Moura <address@hidden> a écrit :


On 19/02/2015, at 19:11, Fx <address@hidden> wrote:

:)) Paulo, you are right, if it can help. I won’t promise anything, but i can at least take a look, sure.

Can you help, and tell me where cans i found some infos:
- What are actually the tools (or info link )to compile under Windows (7,32b my office copmuter)
- What are actually the tools (or info link )to compile under Os X (this one is really rather a computer, my personnal(s) one(s)).

I cannot help you with building GNU Prolog on Windows but, on Mac OS X, just follow the steps in the INTALL file.

Dont’ they exists some kinda unit tests ? Prolog coded scenario ?  Or a Jenkins like for massive testing ?

Logtalk includes a Prolog conformance test suite but it only tests, as it names indicates, standards related stuff. The small number of conformance issues are known (and some of them are really limitations in the standard). I cannot speak for Daniel, of course, but testing of other (non-standard) features would like be more useful. Specially stuff this might behave differently across different operating-systems (like sockets :-).

Cheers,

Paulo

Le 19 févr. 2015 à 20:00, Paulo Moura <address@hidden> a écrit :


On 19/02/2015, at 18:58, Fx <address@hidden> wrote:

Daniel,

Thank you very much for your answer, and this is a great news for 1.4.5 !!!

I’ll be patient and wait for the official distribution.

Don't be patient. Help instead beta-testing 1.4.5.

Cheers,

Paulo


Le 17 févr. 2015 à 13:32, Daniel Diaz <address@hidden> a écrit :

Hi,

sorry for the late reply. Thank you for this bug report.

The bug is fixed in the last git version. Will be fixed in next 1.4.5

Daniel



Le 27/01/2015 12:44, address@hidden a écrit :
Dear Daniel,

I am working on a specific http server for gnu prolog (1.4.4), and i discovered
a strange comportment under windows 7 (32) with the select/5 predicate.

The simple test below works fine on a OSX (maybe all unix) system but will
return a system error under Windos 7 (32) , "Bad File Descriptor":

ERROR : Failed to start server : error(system_error(Bad file
descriptor),select/5)

To test, launch one of the two test cases and open an internet browser to
http://127.0.0.1:8080/ for example, or change the 127.0.0.1 by your IP.

%- Program Test with Select -----------------------------------

worker_run(Socket, Client, StreamIn, StreamOut):- write('i am a working worker
...'), nl.

server_test_with_select:-
socket('AF_INET', Socket),
socket_bind(Socket, 'AF_INET'(Host, 8080)),
socket_listen(Socket,10),
catch(  server_loop_with_select(Socket),E,
 (  socket_close(Socket),
format( "ERROR : Failed to start server : ~w~n", [E] )
)).

server_loop_with_select(Socket):-
repeat,
select([Socket],ReadyReads,[Socket],[],0),
worker_run(Socket, Client, StreamIn, StreamOut),
fail.

%- End of Program Test with Select -----------------------------------

When not using usefull select/5 and directly use the socket_accept/4 predicate
the server works well.


%- Program Test without Select -----------------------------------

worker_run(Socket, Client, StreamIn, StreamOut):- write('i am a working worker
...'), nl.

server_test_without_select:-
socket('AF_INET', Socket),
socket_bind(Socket, 'AF_INET'(Host, 8080)),
socket_listen(Socket,10),
catch(  server_loop_without_select(Socket),E,
 (  socket_close(Socket),
format( "ERROR : Failed to start server : ~w~n", [E] )
)).

server_loop_without_select(Socket):-
repeat,
socket_accept(Socket, Client, StreamIn, StreamOut),
worker_run(Socket, Client, StreamIn, StreamOut),
fail.

%- End of Program Test without Select -----------------------------------


Is it a known bug and did you plan to fix it in a future version ?


Best Regards,

Fx NION.


_______________________________________________
Bug-prolog mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/bug-prolog



-- 
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.



_______________________________________________
Bug-prolog mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/bug-prolog

-----------------------------------------------------------------
Paulo Moura
Logtalk developer

Email: <mailto:address@hidden>
Web:   <http://logtalk.org/>
-----------------------------------------------------------------






-----------------------------------------------------------------
Paulo Moura
Logtalk developer

Email: <mailto:address@hidden>
Web:   <http://logtalk.org/>
-----------------------------------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]