[zeromq-dev] memory leak or heap problem in czmq on Windows build
Hi, zmq version: zeromq-4.0.3(build as Windows DLL) czmq version: czmq-2.0.3(build as Windows DLL) IDE: Visual Studio Professional 2010 I have a small progream which creates two thread and uses ZMQ_PAIR socket over inproc to send data from one to another. One thread sends data using zstr_send and other receives using zstr_recv. If I don't free string received from zstr_recv , I get constant increase of memory (via Task Manager). If I free it using free(), i get heap corruption error on the frist free. Here is the code *#include iostream* *#include czmq.h* *#include boost/thread.hpp* *zctx_t *zmq_ctx=NULL;* *void normalizer() * *{* *void *xmitter;* * xmitter = zsocket_new(zmq_ctx, ZMQ_PAIR);* * zsocket_connect (xmitter, inproc://sender);* *while(1)* *{* * zstr_send (xmitter, hello);* * }* * zsocket_destroy (zmq_ctx, xmitter);* *}* *void sender() * *{* * void *receiver = zsocket_new(zmq_ctx, ZMQ_PAIR);* *int rc = zsocket_bind (receiver, inproc://sender);* * boost::thread t(normalizer);* * int counter=0;* *while(1)* *{* * char *string = zstr_recv (receiver);* * counter++;* *if(counter%1==0)* * {* *std::cout counter: counter std::endl;* * }* * //free (string); //problem is here* * }* * zsocket_destroy(zmq_ctx, receiver);* *}* *void main(void)* *{* * zmq_ctx = zctx_new();* * boost::thread t(sender);* * t.join();* *}* ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
Re: [zeromq-dev] memory leak or heap problem in czmq on Windows build
And the strange thing is, If I use static version of czmq build, everything works fine and no error on free(string). On Wed, Apr 2, 2014 at 11:55 AM, Pritesh Acharya priteshacha...@gmail.comwrote: Hi, zmq version: zeromq-4.0.3(build as Windows DLL) czmq version: czmq-2.0.3(build as Windows DLL) IDE: Visual Studio Professional 2010 I have a small progream which creates two thread and uses ZMQ_PAIR socket over inproc to send data from one to another. One thread sends data using zstr_send and other receives using zstr_recv. If I don't free string received from zstr_recv , I get constant increase of memory (via Task Manager). If I free it using free(), i get heap corruption error on the frist free. Here is the code *#include iostream* *#include czmq.h* *#include boost/thread.hpp* *zctx_t *zmq_ctx=NULL;* *void normalizer() * *{* *void *xmitter;* * xmitter = zsocket_new(zmq_ctx, ZMQ_PAIR);* * zsocket_connect (xmitter, inproc://sender);* *while(1)* *{* * zstr_send (xmitter, hello);* * }* * zsocket_destroy (zmq_ctx, xmitter);* *}* *void sender() * *{* * void *receiver = zsocket_new(zmq_ctx, ZMQ_PAIR);* *int rc = zsocket_bind (receiver, inproc://sender);* * boost::thread t(normalizer);* * int counter=0;* *while(1)* *{* * char *string = zstr_recv (receiver);* * counter++;* *if(counter%1==0)* * {* *std::cout counter: counter std::endl;* * }* * //free (string); //problem is here* * }* * zsocket_destroy(zmq_ctx, receiver);* *}* *void main(void)* *{* * zmq_ctx = zctx_new();* * boost::thread t(sender);* * t.join();* *}* ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] zmq with ssh
Is zmq using ssh supported.I couldn't find anything such in the core library. Is there a library to secure zmq connection using ssh encription? -Pritesh ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] problem linking czmq on czmq_selftest on Windows machine
I am using Windows 8, Visual Studio 2010. I compiled zmq dynamically and czmq statically, but unable to compile the czmq_selftest project. I checked the additional library directory and added path to czmq.lib. Error 1 error LNK2019: unresolved external symbol _zauth_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 2 error LNK2019: unresolved external symbol _zcertstore_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 3 error LNK2019: unresolved external symbol _zcert_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 4 error LNK2019: unresolved external symbol _zpoller_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 5 error LNK2019: unresolved external symbol _ztree_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 6 error LNK2019: unresolved external symbol _zchunk_test referenced in function _main D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\czmq_selftest.obj czmq_selftest Error 7 error LNK2019: unresolved external symbol _zpoller_destroy referenced in function _zbeacon_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zbeacon.obj 1 1 czmq_selftest Error 8 error LNK2019: unresolved external symbol _zpoller_wait referenced in function _zbeacon_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zbeacon.obj 1 1 czmq_selftest Error 9 error LNK2019: unresolved external symbol _zpoller_new referenced in function _zbeacon_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zbeacon.obj 1 1 czmq_selftest Error 10 error LNK2019: unresolved external symbol _zdir_destroy referenced in function _zconfig_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zconfig.obj 1 1 czmq_selftest Error 11 error LNK2001: unresolved external symbol _zdir_destroy D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 12 error LNK2019: unresolved external symbol _zdir_remove referenced in function _zconfig_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zconfig.obj 1 1 czmq_selftest Error 13 error LNK2001: unresolved external symbol _zdir_remove D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 14 error LNK2019: unresolved external symbol _zdir_new referenced in function _zconfig_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zconfig.obj 1 1 czmq_selftest Error 15 error LNK2001: unresolved external symbol _zdir_new D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 16 error LNK2019: unresolved external symbol _zchunk_size referenced in function _zfile_read D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 17 error LNK2019: unresolved external symbol _zchunk_read referenced in function _zfile_read D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 18 error LNK2019: unresolved external symbol _zchunk_write referenced in function _zfile_write D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 19 error LNK2019: unresolved external symbol _zdir_cursize referenced in function _zfile_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 20 error LNK2019: unresolved external symbol _zchunk_destroy referenced in function _zfile_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 21 error LNK2019: unresolved external symbol _zchunk_fill referenced in function _zfile_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 22 error LNK2019: unresolved external symbol _zchunk_new referenced in function _zfile_test D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\zfile.obj 1 1 czmq_selftest Error 23 error LNK1120: 19 unresolved externals D:\ubuntu_share\programming\C++\library\zmq\czmq\czmq-2.0.3_bak\builds\msvc\Win32\Debug\czmq_selftest.exe czmq_selftest ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
Re: [zeromq-dev] zeromq-dev Digest, Vol 65, Issue 4
I tried ZMQ_EVENTS, it worked but not completely. I am only able to receive few message and then the callback never hits. I'm calling zmq_getsockopt with ZMQ_EVENTS twice. before zmq_recv and after. Here is the complete code snippet of callback. static char * zmq_msg_recv_all(evutil_socket_t fd, short event, void *receiver) { char *msg = NULL; unsigned int zmq_events; size_t zmq_events_size = sizeof(zmq_events); zmq_getsockopt (receiver, ZMQ_EVENTS, zmq_events, zmq_events_size); if (zmq_events ZMQ_POLLIN) { msg=calloc(1024,sizeof(char)); int size = zmq_recv (receiver, msg, 255, ZMQ_DONTWAIT); if (size != -1) { #ifdef DEBUG printf(msg = %s\n,msg); #endif } else { free(msg); msg=NULL; } zmq_getsockopt (receiver, ZMQ_EVENTS, zmq_events, zmq_events_size); } return msg; } you need to read the man page about ZMQ_FD and ZMQ_EVENTS http://api.zeromq.org/3-2:zmq-getsockopt in short, once ZMQ_FD is readable you need to look at ZMQ_EVENTS and consume all messages until ZMQ_EVENTS is clear jon On 3 May 2013 11:01, Pritesh Acharya priteshacha...@gmail.com wrote: I'm writing a service in C programming using libevent and zmq. Msg is pushed from python code to C service using PUSH-PULL pattern. fd received from zmq socket: void *receiver = zmq_socket (base.zmq_ctx, ZMQ_PULL); zmq_connect (receiver, tcp://localhost:5557);int fd=0;size_t fd_len = sizeof(fd); zmq_getsockopt (receiver, ZMQ_FD, fd, fd_len); Using Libevent, event registered with fd for persistent read struct event *read_data_on_zmq =event_new(base.evbase, fd, EV_READ | EV_PERSIST , read_data_on_zmq_cb,receiver); event_add(read_data_on_zmq,NULL); event_base_dispatch(base.evbase); On the callback method I'm doing a non-blocking receive void read_data_on_zmq_cb(evutil_socket_t fd, short what, void *arg){ char *msg = calloc(1024,sizeof(char)); int size = zmq_recv (receiver, msg, 255, ZMQ_DONTWAIT); if (size != -1) { puts (is size is not -1); printf(msg = %s\n,msg); }} In the python code I'm continuously sending message to the socket. import zmqimport time c=zmq.Context() s=c.socket(zmq.PUSH) s.bind('tcp://127.0.0.1:5557')while(True): s.send(abc) time.sleep(2) The problem is I'm only able to receive the message once, after that the event callback never gets hit. If I do zmq_connect inside the read_data_on_zmq_cb after zmq_recv, then it works fine, but I guess that is redundant and not the correct way to do it. What is the problem here? ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev -- next part -- An HTML attachment was scrubbed... URL: http://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130503/9444f03d/attachment-0001.htm -- ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
Re: [zeromq-dev] libevent kqueue doesn't work on fd returned from zmq_getsockopt()
I tried ZMQ_EVENTS, it worked but not completely. I am only able to receive few message and then the callback never hits. I'm calling zmq_getsockopt with ZMQ_EVENTS twice. before zmq_recv and after. Here is the complete code snippet of event callback method. static char * zmq_msg_recv_all(evutil_socket_t fd, short event, void *receiver) { char *msg = NULL; unsigned int zmq_events; size_t zmq_events_size = sizeof(zmq_events); zmq_getsockopt (receiver, ZMQ_EVENTS, zmq_events, zmq_events_size); if (zmq_events ZMQ_POLLIN) { msg=calloc(1024,sizeof(char)); int size = zmq_recv (receiver, msg, 255, ZMQ_DONTWAIT); if (size != -1) { #ifdef DEBUG printf(msg = %s\n,msg); #endif } else { free(msg); msg=NULL; } zmq_getsockopt (receiver, ZMQ_EVENTS, zmq_events, zmq_events_size); } return msg; } -- Message: 3 Date: Fri, 3 May 2013 11:07:42 +0100 From: Jon Dyte j...@totient.co.uk Subject: Re: [zeromq-dev] libevent kqueue doesn't work on fd returned fromzmq_getsockopt() To: ZeroMQ development list zeromq-dev@lists.zeromq.org Message-ID: caggrmhom1t0ydvhakdfemo5smd6l74qc1zsvcdhhpi5typz...@mail.gmail.com Content-Type: text/plain; charset=iso-8859-1 you need to read the man page about ZMQ_FD and ZMQ_EVENTS http://api.zeromq.org/3-2:zmq-getsockopt in short, once ZMQ_FD is readable you need to look at ZMQ_EVENTS and consume all messages until ZMQ_EVENTS is clear jon On 3 May 2013 11:01, Pritesh Acharya priteshacha...@gmail.com wrote: I'm writing a service in C programming using libevent and zmq. Msg is pushed from python code to C service using PUSH-PULL pattern. fd received from zmq socket: void *receiver = zmq_socket (base.zmq_ctx, ZMQ_PULL); zmq_connect (receiver, tcp://localhost:5557);int fd=0;size_t fd_len = sizeof(fd); zmq_getsockopt (receiver, ZMQ_FD, fd, fd_len); Using Libevent, event registered with fd for persistent read struct event *read_data_on_zmq =event_new(base.evbase, fd, EV_READ | EV_PERSIST , read_data_on_zmq_cb,receiver); event_add(read_data_on_zmq,NULL); event_base_dispatch(base.evbase); On the callback method I'm doing a non-blocking receive void read_data_on_zmq_cb(evutil_socket_t fd, short what, void *arg){ char *msg = calloc(1024,sizeof(char)); int size = zmq_recv (receiver, msg, 255, ZMQ_DONTWAIT); if (size != -1) { puts (is size is not -1); printf(msg = %s\n,msg); }} In the python code I'm continuously sending message to the socket. import zmqimport time c=zmq.Context() s=c.socket(zmq.PUSH) s.bind('tcp://127.0.0.1:5557')while(True): s.send(abc) time.sleep(2) The problem is I'm only able to receive the message once, after that the event callback never gets hit. If I do zmq_connect inside the read_data_on_zmq_cb after zmq_recv, then it works fine, but I guess that is redundant and not the correct way to do it. What is the problem here? ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev -- next part -- An HTML attachment was scrubbed... URL: http://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130503/9444f03d/attachment-0001.htm -- ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] libevent kqueue doesn't work on fd returned from zmq_getsockopt()
I'm writing a service in C programming using libevent and zmq. Msg is pushed from python code to C service using PUSH-PULL pattern. fd received from zmq socket: void *receiver = zmq_socket (base.zmq_ctx, ZMQ_PULL); zmq_connect (receiver, tcp://localhost:5557);int fd=0;size_t fd_len = sizeof(fd); zmq_getsockopt (receiver, ZMQ_FD, fd, fd_len); Using Libevent, event registered with fd for persistent read struct event *read_data_on_zmq =event_new(base.evbase, fd, EV_READ | EV_PERSIST , read_data_on_zmq_cb,receiver); event_add(read_data_on_zmq,NULL); event_base_dispatch(base.evbase); On the callback method I'm doing a non-blocking receive void read_data_on_zmq_cb(evutil_socket_t fd, short what, void *arg){ char *msg = calloc(1024,sizeof(char)); int size = zmq_recv (receiver, msg, 255, ZMQ_DONTWAIT); if (size != -1) { puts (is size is not -1); printf(msg = %s\n,msg); }} In the python code I'm continuously sending message to the socket. import zmqimport time c=zmq.Context() s=c.socket(zmq.PUSH) s.bind('tcp://127.0.0.1:5557')while(True): s.send(abc) time.sleep(2) The problem is I'm only able to receive the message once, after that the event callback never gets hit. If I do zmq_connect inside the read_data_on_zmq_cb after zmq_recv, then it works fine, but I guess that is redundant and not the correct way to do it. What is the problem here? ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] ruby binding for zmq
I tried rbzmq from https://github.com/zeromq but it doesn't install. I think this binding is no longer support for newer zmq. When I looked around i found ffi-rzmq is also ruby binding for zmq. I wanna know the difference between gem zqm and ffi-zmq. Which one should I use ? Thanks, Pritesh ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] Confusion in the parallel pipe example
In the parallel pipe example, zmq_bind (sender, tcp://*:5557); zmq_connect (sink, tcp://localhost:5558); and s_send (sink, 0); s_send (sender, string); how does the control continues in the first s_send and block on the second s_send, when I haven't started sink on 5558 port. ? ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev
[zeromq-dev] Basic server.c example
Hi, I'm running the first server.c example of zmq guide. Instead of using client.c example to send message to server, I want to use some linux command to do that. I've tried several attempts like 1. $ echo “hello” /dev/tcp/localhost/ 2. nc localhost 3. echo hello | socat - tcp4:localhost: and several others. But nothing worked. If anyone could tell me if it's possible to do that , if yes how? Pritesh ___ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev