I don't think you allocated space for the buffer when you receive the
message:
1. struct example *buffer;
2. int size = zmq_recv(receiver,buffer,sizeof(struct example),0);
3. if(size==-1)
4. {
5. printf("Error in Receiving \n");
6. }
buffer is an un-initialized pointer. It should probably be like this:
struct example buffer;
int size = zmq_recv(receiver,&buffer,sizeof(buffer),0);
Mark
On Tue, Dec 20, 2016 at 6:14 AM, Shrikanth M.D. <[email protected]>
wrote:
> Hi,
>
> I have tried a small piece of code as in here:
> http://pastebin.com/JUxXjYX2
>
>
> I am using ZEROMQ 4.1.5 library and running on Ubuntu 15.04.
> This is how I compile and execute the code:
> gcc zeromq_example.c -o a.out -lzmq -lpthread
>
>
>
> When I compile the example code in the link as sudo user, I am able to
> successfully receive
> the struct content on the thread side.
> However, occasionally I observe ZMQ_Receive error. Is this because I am
> executing my program too quickly again in the second run?
>
> Below is the output:
> shrikanth@mds:~$ sudo ./a.out
> The values received are 1000 5000 100 500 HelloWorld
> shrikanth@mds:~$ sudo ./a.out
> Error in Receiving
> The values received are -1052453120 32596 1 0
> shrikanth@mds:~$ sudo ./a.out
> The values received are 1000 5000 100 500 HelloWorld
> shrikanth@mds:~$
>
>
> Also, without sudo user, although buffer contents are received by the
> thread, it ends up with a segmentation fault (may be because of the memory
> access to struct sample within the struct example).
>
> Could you please suggest a workaround for this situation?
> I do not want to serialize/de-serialize stuff between my main thread and
> worker thread.
>
> Any kind of input is deeply appreciated.
>
> Regards,
> Shrikanth
>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
_______________________________________________
zeromq-dev mailing list
[email protected]
https://lists.zeromq.org/mailman/listinfo/zeromq-dev