On Fri, 2017-09-29 at 11:38 +0200, Bachmair Florian - flexSolution GmbH wrote: > Hi! > > When I stop my application in roughly 1 out of 20 tries I get this > error: > > Assertion failed: pfd.revents & POLLIN (src/signaler.cpp:243) (here > is > the corresponding line of code: > https://github.com/zeromq/libzmq/blob/v4.2.0/src/signaler.cpp#L243 ) > > Stack trace of thread 8576: > #0 0x00007f56d22a78a0 raise (libc.so.6) > #1 0x00007f56d22a8f09 abort (libc.so.6) > #2 0x00007f5686c7cc99 n/a > (/home/flex/core-1.5.0-SNAPSHOT/lib/native/libzmq.so.5) > #3 0x00007f56d26255a0 _IO_2_1_stderr_ (libc.so.6) > > > Before I stop my application I disconnect from ALL publishers with > > zsock_disconnect(subscriber, "tcp://%s:%d", c_ip, port); > > after that I destroy my sockets and actors > > zsock_destroy(&publisher); > zsock_destroy(&req); > zsock_destroy(&subscriber); > > //this is never finished > zactor_destroy(&actorRep); > zactor_destroy(&actorSub); > > > I guess its a problem with stopping the actors, how do I propperly > stop > this actor? > > void sub_actor(zsock_t *pipe, void *args) { > zsock_signal(pipe, 0); > while (!zsys_interrupted) { > char* topic; > char* timestamp; > char* value; > char* id; > zsock_recv(subscriber, "ssss", &topic, ×tamp, &id, > &value); > > onMessageReceived(topic, timestamp, id,value); > } > } > > Thanks Florian
As the docs say, the zactor function must listen for $TERM on the pipe zsock_t: http://czmq.zeromq.org/czmq4-0:zactor https://github.com/zeromq/czmq#czmq-actors zactor_destroy() from the parent will, under the hood, send the $TERM message and wait for the zactor to correctly close. -- Kind regards, Luca Boccassi
signature.asc
Description: This is a digitally signed message part
_______________________________________________ zeromq-dev mailing list [email protected] https://lists.zeromq.org/mailman/listinfo/zeromq-dev
