[zeromq-dev] default MAX_SOCKETS on Windows set to 63?

KIU Shueng Chuan nixchuan at gmail.com
Tue Feb 18 00:42:44 CET 2014


Looking at the ctx.cpp source, setting of MAX_SOCKETS goes through
clipped_maxsocket() which clips it to "max_fds()-1", where max_fds() is
equal to FD_SETSIZE as returned by zmq::select_t::max_fds(). So your issue
does appear to be related to FD_SETSIZE.



I tried it out again on zeromq4-x 571c668fa2e0b101f607b4c4a34c30da2f174499.

Cross-compile on Linux using MinGW32:
> CPPFLAGS=-DFD_SETSIZE=1024 ./configure --host=i686-pc-mingw32

> grep CPPFLAGS Makefile
CPPFLAGS = -pedantic -Werror -Wall -Wno-long-long -D_REENTRANT
-D_THREAD_SAFE -DFD_SETSIZE=1024 -DZMQ_FORCE_SELECT

Adding the following snippet in one of the source files shows that it does
get picked up.
#if FD_SETSIZE!=1024
#error "FD_SETSIZE wrong"
#endif



If you are compiling directly on Windows and do not want to install MSYS
(using MSYS may yield other quirks!), an alternative to using configure is
to go to the subdir builds/mingw32.
There is a simple Makefile.mingw32 there.
Just run "mingw32-make Makefile.mingw32"
Haven't tried this for some time and it is supposed to be automatically
generated nowadays.



On Tue, Feb 18, 2014 at 12:27 AM, Charles Remes <lists at chuckremes.com>wrote:

> I've tried a few different ways of providing FD_SETSIZE but nothing has
> worked for me so far.
>
> I have tried:
>
> * CFLAGS=-DFD_SETSIZE=1024 ./configure
>
> * CPPFLAGS=-DFD_SETSIZE=1024 ./configure
>
> Neither one is picked up properly by the system. What else should I try?
>
> On Feb 14, 2014, at 5:56 PM, KIU Shueng Chuan <nixchuan at gmail.com> wrote:
>
> https://github.com/zeromq/czmq/issues/104
>
> If compiling using the configure script you need to provide FD_SETSIZE.
> On 15 Feb 2014 01:28, "Charles Remes" <lists at chuckremes.com> wrote:
>
>> I received a bug report from a user who compiled zeromq 4.0.3 on Windows
>> using 32-bit mingw. The code that blew up was:
>>
>> context = LibZMQ.zmq_ctx_new
>> rc = LibZMQ.zmq_ctx_set(context, ZMQ::MAX_SOCKETS, 1023)
>>
>> At this point, "rc" was returning -1 and the error message is "Invalid
>> Argument". After playing around with this a bit I discovered that the
>> default MAX_SOCKETS was 63 on this platform.
>>
>> context = LibZMQ.zmq_ctx_new
>> print LibZMQ.zmq_ctx_set(context, ZMQ::MAX_SOCKETS) # => prints "63"
>>
>> So, trying to set a value above 63 always fails.
>>
>> For further confirmation, I ran "make check" and noted that
>> "test_ctx_options" also fails (though it doesn't tell me why).
>>
>> Does anyone know why MAX_SOCKETS is set to 63 when compiling on Windows
>> using mingw? When I look at the source, MAX_SOCKETS_DFLT is set to 1023!
>>
>> cr
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140218/d545edd5/attachment.htm>


More information about the zeromq-dev mailing list