On Dec 20, 2011, at 3:03 PM, Morten Møller Riis wrote:
> Hi Guys
>
> I am having a problem that is driving me crazy.
>
> It seems to me that the ruby garbage collector and zeromq might not be the
> best of friends.
>
> I have an application that uses ZMQ where something like this happens:
>
> class Client
> def self.listen
> @socket = ZMQ::Context.new.socket(ZMQ::UPSTREAM)
> @socket.bind("tcp://#{IP}:#{MINION_PORT}")
>
> while(true)
> msg = @socket.recv()
> # do something with the message
> end
> end
> end
This isn't new for 2.1. I think you are just getting lucky on that other code.
The problem is this line:
> @socket = ZMQ::Context.new.socket(ZMQ::UPSTREAM)
You are not saving a reference to the context that you just created, so the GC
will reap it at some point. Change it to:
> @context = ZMQ::Context.new
> @socket = @context.socket(ZMQ::UPSTREAM)
And now all will be well with the world.
cr
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev