Wednesday December 1, 2010

[Time] NameMessage
[00:03] Nate75Sanders I'm using python (I don't think that would matter, but thought I'd mention) and when I use a PUSH/PULL pair _without_ HWM, the send() calls do not block when there is no PULLer. Is this correct behavior?
[00:04] Nate75Sanders manpage for zmq_socket reads to me like it should block when there is no downstream node
[00:31] kisielk hm I don't have a ZMQ install here where I can test that, but according to the docs you are correct
[00:34] Nate75Sanders the messages queue up and are delivered later....but there's no blocking behavior
[00:35] Nate75Sanders to me block means "i'm going to sleep until there's a receiver"
[00:45] kisielk agreed
[00:46] kisielk it's either a bug in the code or documentation
[00:46] kisielk you should report it
[00:48] Nate75Sanders I should probably take a look at the mailing list....or bug tracker if that's public
[00:48] Nate75Sanders I haven't followed their dev process/mailing list/etc very closely....mostly just playing around
[00:49] kisielk
[00:49] kisielk file a bug there with example code
[00:50] Nate75Sanders thanks
[00:55] Nate75Sanders going to make _sure_ that I'm using latest stuff, etc first, though
[01:00] kisielk yeah that's a good idea
[01:01] kisielk although I don't see any closed issues related to push blocking
[01:18] Nate75Sanders heh, i have some serious formatting problems
[01:19] Nate75Sanders editing the issue
[01:21] Nate75Sanders .....and I don't get GitHub's markup
[01:21] Nate75Sanders ugh
[04:16] Nate75Sanders anybody here?
[04:18] Nate75Sanders appreciate it if someone would take a look at and see if I'm crazy or not
[05:05] the_hulk hi, i an trying to make a simple chat server-client app, zmq_msg_init_size on server site, caused termination saying "Illegal Instruction", what could this mean? any help?
[05:40] guido_g Nate75Sanders: no HWM means: queue all messages as long as memory permits.
[05:41] Nate75Sanders guido_g: Fair enough, but that means the documentation is wrong.
[05:41] guido_g Nate75Sanders: i think the "no downstream nodes" only applies when there _never_ were one
[05:42] guido_g because if there was a connection, then there is a queue and the hwm applies
[05:42] Nate75Sanders guido_g: strange....I definitely think the man page should describe this in more detail
[05:42] guido_g than attach a fix to the issue or post a patch to the ml
[05:42] Nate75Sanders guido_g: could you tell me where you gained this particular understanding of things? so i can read there instead?
[05:43] Nate75Sanders guido_g: I'd like to make _sure_ what you're saying is correct (it sounds like it is).
[05:43] guido_g Nate75Sanders: easy, hang around here for 3 to 4 month, read the things from the core devs that fly by and you'll know :)
[05:44] Nate75Sanders guido_g: understood :)
[05:44] guido_g Nate75Sanders: then write a test case and check what'S going on
[05:44] Nate75Sanders well, i'm halfway there -- based on my bug report
[05:44] Nate75Sanders just need a no-receiver at all case
[05:45] guido_g btw, writing a bug report w/o proof (aka test/show case) isn't worth much
[05:45] Nate75Sanders you know what? actually i think i tested that earlier
[05:45] Nate75Sanders yeah
[05:45] Nate75Sanders i did
[05:45] Nate75Sanders and i just did now, too
[05:46] Nate75Sanders there was never a downstream node
[05:46] Nate75Sanders and it still does NOT block
[05:46] guido_g then attach your test incl. program to the issue, so that it can be verified
[05:46] Nate75Sanders i did
[05:46] Nate75Sanders it's in the bug report
[05:46] Nate75Sanders 2 scripts
[05:46] Nate75Sanders you can run the PUSHer without the PULLer and it refutes what you said earlier
[05:47] Nate75Sanders when you have a PUSHer, if there's no HWM present (whether or not there ever was) the behavior is that it will not block
[05:47] Nate75Sanders sorry, meant to say
[05:48] Nate75Sanders if there's no HWM and no receiver (whether or not there ever was a receiver) the behavior is that it will not block
[05:48] Nate75Sanders so, I'm not sure where you got your info, but it isn't correct
[05:49] Nate75Sanders you can run my code if you don't believe me
[05:49] Nate75Sanders maybe i'm crazy somehow
[05:49] Nate75Sanders but it's in the bug report
[05:50] Nate75Sanders wish sustrik was around....
[05:51] guido_g he will be in an hour or so
[05:51] guido_g he's an early bird
[05:53] guido_g hmm hmm mhmm
[05:53] guido_g if you use bind instead of connect on the push side, it works
[05:54] guido_g i just used "socket.bind("tcp://")"
[05:54] guido_g and it blocks, as described
[05:55] guido_g and with connect the hwm works too
[05:56] guido_g so it's more a documentation issue on bind vs connect, i'd say
[05:58] Nate75Sanders fair enough
[05:58] guido_g Nate75Sanders: just added that as a comment to your issue
[05:58] Nate75Sanders i had considered that, but not tested it
[05:58] guido_g tz tz tz
[05:58] Nate75Sanders i think in one part of the docks they make a big point to say that bind vs connect shouldn't affect socket semantics
[05:59] Nate75Sanders just the stable vs non-knowable parts of your architecture
[05:59] Nate75Sanders so i really do think that should be dealt with
[05:59] Nate75Sanders but good detective work
[05:59] guido_g before first coffee
[06:00] Nate75Sanders are you in europe?
[06:00] guido_g yes
[06:00] Nate75Sanders italy?
[06:00] guido_g no
[06:00] Nate75Sanders oh :)
[06:00] Nate75Sanders hehe
[06:00] Nate75Sanders I'm in Honolulu
[06:00] Nate75Sanders so it's 8PM here
[06:00] guido_g *sigh*
[06:00] Nate75Sanders "yesterday" :)
[06:00] Nate75Sanders moving soon
[06:01] Nate75Sanders this is a fun place to live, but not good for hackers
[06:01] Nate75Sanders i will miss the weather, though
[06:01] Nate75Sanders truly, truly amazing
[06:01] Nate75Sanders in the winter it's 75 and sunny
[06:01] guido_g given that outside are -7°C i tend to be a bit jealous
[06:01] Nate75Sanders in the summer, it's 85 and sunny
[06:02] guido_g and i need to go to the office soon *shudder*
[06:03] Nate75Sanders What kind of place do you work?
[06:03] guido_g i'm a freelancer, at the moment i'm working at a local bank
[06:04] Nate75Sanders I decided to work for a place that doesn't really do as much code (half code, half sysadmin for an oceanographic science team)
[06:04] Nate75Sanders it's been great
[06:04] guido_g sounds good
[06:04] Nate75Sanders i help them immensely and everything i do is magic
[06:04] Nate75Sanders and i have plenty of free time
[06:04] Nate75Sanders didn't expect this
[06:04] Nate75Sanders i used to work more dev jobs....
[06:04] guido_g sounds even better :)
[06:04] Nate75Sanders they just left me feeling bad
[06:04] Nate75Sanders turning the thing i loved into terrible terrible work
[06:05] Nate75Sanders come home.....hardly interested in the computer....
[06:05] Nate75Sanders now? i'm happy to dive in and work on something
[06:05] Nate75Sanders not tired at the end of a day
[06:05] guido_g that's the price to pay, i know that
[06:05] Nate75Sanders yeah
[06:07] guido_g more coffee
[06:07] Nate75Sanders indeed :)
[06:07] Nate75Sanders don't work too hard today....
[06:07] Nate75Sanders pace yourself
[06:07] guido_g hey, it's a bank
[06:07] Nate75Sanders your 6 hours is easily worth someone else's 9
[06:07] Nate75Sanders deep breaths
[06:07] Nate75Sanders ;)
[06:08] guido_g ahhh...
[06:08] Nate75Sanders mindfulness
[06:08] guido_g i should have mentioned that today is my weekend
[06:08] Nate75Sanders oh, nice
[06:08] guido_g doing only 3 days a week
[06:08] Nate75Sanders sweet
[06:08] guido_g yeah
[06:08] Nate75Sanders hey you have it good, then
[06:09] Nate75Sanders i'm about to go half-time/half-salary myself
[06:09] Nate75Sanders and move
[06:09] guido_g i'm surprised that it worked
[06:09] Nate75Sanders which part?
[06:09] guido_g as i said, it's a bank
[06:09] guido_g the part time thingy
[06:09] Nate75Sanders yeah
[06:09] Nate75Sanders i am surprised too
[06:09] guido_g there not _that_ flexible usually
[06:09] Nate75Sanders yep
[06:09] Nate75Sanders agreed
[06:09] Nate75Sanders my dad runs a bank
[06:10] guido_g ahh so you know a little
[06:11] Nate75Sanders so what do you do with your spare time?
[06:12] guido_g reading funny irc channels on obscure software things, linke brokerless messaging and such
[06:12] guido_g noone will ever need this shit! :)
[06:13] Nate75Sanders haha
[06:13] Nate75Sanders nice
[06:16] guido_g i'd have a project using all this fun stuff -- if i would be better sales guy
[09:21] mikko good morning
[09:27] CIA-20 zeromq2: 03Martin Lucina 07maint * r289b1f5 10/ src/kqueue.cpp :
[09:27] CIA-20 zeromq2: Remove unnecessary cast in kevent_delete
[09:27] CIA-20 zeromq2: Fixes the build on NetBSD where the compiler complains about casting NULL
[09:27] CIA-20 zeromq2: to (int).
[09:27] CIA-20 zeromq2: Signed-off-by: Martin Lucina <> -
[09:27] CIA-20 zeromq2: 03Martin Lucina 07master * r289b1f5 10/ src/kqueue.cpp :
[09:27] CIA-20 zeromq2: Remove unnecessary cast in kevent_delete
[09:27] CIA-20 zeromq2: Fixes the build on NetBSD where the compiler complains about casting NULL
[09:27] CIA-20 zeromq2: to (int).
[09:27] CIA-20 zeromq2: Signed-off-by: Martin Lucina <> -
[09:27] CIA-20 zeromq2: 03Martin Sustrik 07master * r17d7e6e 10/ src/kqueue.cpp :
[09:27] CIA-20 zeromq2: Merge branch 'maint'
[09:28] CIA-20 zeromq2: Remove unnecessary cast in kevent_delete
[09:28] CIA-20 zeromq2: Conflicts:
[09:28] CIA-20 zeromq2: src/kqueue.cpp
[09:28] CIA-20 zeromq2: Signed-off-by: Martin Sustrik <> -
[09:34] CIA-20 zeromq2: 03Mikko Koppanen 07master * r5bb0a33 10/ (5 files in 2 dirs): (log message trimmed)
[09:34] CIA-20 zeromq2: Prefix variables with "ac_zmq_"
[09:34] CIA-20 zeromq2: - Added a macro for checking clang compiler
[09:34] CIA-20 zeromq2: - Moved basic compiler checks to a macro
[09:34] CIA-20 zeromq2: - Added a macro for checking if compiler supports a flag
[09:34] CIA-20 zeromq2: - Added --enable-debug flag
[09:34] CIA-20 zeromq2: - Added a macro for running normal autoconf check with compiler flags
[09:47] m exit
[09:58] CIA-20 zeromq2: 03Martin Lucina 07master * rb70d628 10/ (11 files):
[09:58] CIA-20 zeromq2: Documentation updates for 2.1
[09:58] CIA-20 zeromq2: - Clarify ZMQ_LINGER, zmq_close (), zmq_term () relationship
[09:58] CIA-20 zeromq2: - New socket options
[09:58] CIA-20 zeromq2: - Clarify thread safety of sockets and migration between threads
[09:58] CIA-20 zeromq2: - Other minor and spelling fixes
[09:58] CIA-20 zeromq2: Signed-off-by: Martin Lucina <> -
[10:12] CIA-20 zeromq2: 03Martin Lucina 07master * r520d621 10/ :
[10:12] CIA-20 zeromq2: Bump ABI version to 1:0:0 for ZeroMQ 2.1.0 release
[10:12] CIA-20 zeromq2: Signed-off-by: Martin Lucina <> -
[10:34] vaadim Hello, all.
[10:34] vaadim Anybody can to help me?
[10:35] vaadim I have a critical error in object.cpp file.
[10:35] mikko vaadim: what is the error?
[10:36] vaadim Version 2.0.10 for windows.
[10:37] vaadim I write test project for client and server applications. Run zmq::queue() function.
[10:37] mikko what is the actual error?
[10:38] vaadim This function call zmq_poll->zmq::app_thread_t::process_commands->process_bind and
[10:38] vaadim in case command_t::bind: process_bind (cmd_.args.bind.in_pipe, cmd_.args.bind.out_pipe, blob_t (cmd_.args.bind.peer_identity, cmd_.args.bind.peer_identity_size));
[10:39] vaadim and cmd_.args.bind.peer_identity have a Bad Ptr == 0x0000000
[10:39] vaadim crash
[10:40] mikko does the same thing happen with github master?
[10:40] mikko can you test?
[10:40] mikko and is this easy to reproduce?
[10:42] vaadim I was try latest version in github, but this version have another problems, and i revert to version 2.0.10 back
[10:42] vaadim I can show my test project
[10:42] mikko what is the problem you had with the latest version?
[10:44] vaadim Current version in github is stable ? I need stable version for commercial project.
[10:45] mikko what i am intersted in what are the problems you are seeing so that they can be fixed
[10:45] mikko i would like you to test the github master to see if the issue with the null pointer has been fixed already
[10:47] vaadim OK. I will try master from github again. And I will come back with another bag's :)
[10:47] vaadim Thank you for help :)
[10:52] CIA-20 zeromq2: 03Steven McCoy 07master * r4a3ed39 10/ (3 files in 2 dirs):
[10:52] CIA-20 zeromq2: Bump OpenPGM to 5.0.92.
[10:52] CIA-20 zeromq2: Signed-off-by: Steven McCoy <> -
[10:57] Steve-o thx Mato
[10:57] CIA-20 zeromq2: 03Martin Lucina 07master * rabc8b5e 10/ NEWS :
[10:57] CIA-20 zeromq2: Update NEWS file for 2.1.0 release
[10:57] CIA-20 zeromq2: Signed-off-by: Martin Lucina <> -
[11:16] rgl w00t 2.1 has hit the streets?
[11:16] mato almost
[11:16] mato due to DNS issues the announcement will go out this evening
[11:17] mato but it's in Git anyhow :-)
[11:18] mikko ill run daily builds now just to see that everything works
[11:19] rgl :)
[11:19] mikko building now
[11:19] rgl I just noticed Sockets may now be migrated between OS threads, as long as the
[11:19] rgl application ensures that a full memory barrier is issued. ... are there any examples how to do it?
[11:21] mikko is 2.1.0 going out as alpha or beta?
[11:22] rgl from the NEWS files its Beta
[11:24] sustrik rgl: when you migrate a thread you have no notify the other thread somehow
[11:24] sustrik the mechanism you use for the notfication will execute the barrier
[11:24] sustrik unless you are doing some black magic
[11:26] rgl I see. alright :D
[11:33] mikko success on all builds this far
[11:33] sustrik goodo
[11:34] mikko icc failed
[11:34] mikko let's see
[11:34] mikko it might be the shutdown stress test failing
[11:34] mikko Bad file descriptor
[11:34] mikko nbytes != -1 (tcp_socket.cpp:197)
[11:34] mikko yes
[11:35] sustrik yep, known issue
[11:36] rgl mikko, where is the build system? got url?
[11:37] mikko
[11:38] mikko i got my eye on sunfire server on ebay
[11:38] mikko to add sparc into the build system
[11:38] Steve-o incredibly cheap these days, ~US$100
[11:39] Steve-o but also slow as lard, 100mb NICs often
[11:39] mikko this one is Dual 1.3Ghz Processors
[11:39] mikko i don't mind 100mb nic as it's just for building
[11:39] mikko not really for testing
[11:40] rgl mikko, no msvc build?
[11:40] Steve-o memory is the most important though, don't skimp on that
[11:40] mikko rgl: haven't got a windows running
[11:40] mikko Steve-o: it comes with 4GB
[11:40] vaadim Hello, I am here again.
[11:41] mikko the annoyance is that the build machines are running in finland
[11:41] mikko and i live in london
[11:41] mikko need to either host it here or ship it over
[11:41] sustrik does it make any difference?
[11:41] rgl mikko, is using mono then?
[11:41] mikko rgl: yes
[11:41] vaadim mikko: i try the current version from github in my test project
[11:41] mikko vaadim: ok
[11:42] mikko sustrik: i got free hosting in finland
[11:42] mikko that's the only difference
[11:42] sustrik i see
[11:43] rgl mikko, can you add clrmq2 into the clrmq tab too?
[11:43] mikko rgl: done
[11:43] mikko the regex for adding jobs there was outdated
[11:43] vaadim My server stoped with error while i try break zmq_device by call zmq_term() for kill context
[11:43] mikko clrzmq-.*
[11:43] rgl thanks :)
[11:44] mikko sustrik: what is the clean way to stop zmq device?
[11:44] mikko vaadim: i am not sure if that is the way to stop a device
[11:46] sustrik mikko: Ctrl+C?
[11:46] sustrik there's no remote management for devices yet
[11:46] vaadim I read this way in your mailing list archiew
[11:47] vaadim wait a moment...
[11:47] vaadim
[11:48] sustrik vaadim: the devices are dumb pieces of code
[11:48] sustrik basically just a loop that reads from one socket and writes to another one
[11:49] sustrik if you want a better functionality, like a remote management
[11:49] sustrik you can add it there
[11:51] vaadim Sorry, i'm not understand, how to stop loop in device. I need to stop both sockets ?
[11:52] sustrik you just break out of the loop
[11:53] sustrik that's it
[11:53] vaadim How? Kill thread?
[11:53] sustrik while (true) {
[11:53] sustrik ...
[11:53] sustrik if (...)
[11:53] sustrik break;
[11:53] sustrik ...
[11:53] sustrik }
[11:55] vaadim But zmq_device(ZMQ_QUEUE, clients, workers); bon't return control, and i can't make loop myself.
[11:55] sustrik have a look at the source code
[11:55] mikko vaadim: have you looked at the device code?
[11:55] sustrik you just create your own device
[11:55] sustrik and modify it in any way you want
[11:57] vaadim Yeah, well, I'm gonna go build my own device, with blackjack and hookers. In fact, forget the device! :)
[11:59] vaadim Ok, i can append third parameter to my_zmq_device with stop socket.
[12:00] vaadim Thank's.
[16:06] Remoun hi
[16:06] Remoun I'm perusing the guide right now, but I thought I'd ask ahead: Can I overlay some sort of authentication mechanism for workers in a 0MQ-based system?
[16:07] mikko Remoun: i don't see why what would prevent you from doing that
[16:07] Remoun I don't see any reason, either; I just have no idea how yet
[16:07] Remoun But it should be doable (in a transparent manner), right?
[16:07] mikko what do you mean by transparent?
[16:07] mikko you would need to implement it in your code
[16:08] Remoun of course
[16:08] Remoun basically, layering the auth on top of the sockets
[16:08] Remoun So that I don't have to decorate every bit of code using 0MQ sockets with auth handling
[16:09] mikko there are plenty of ways to approach the problem
[16:09] Remoun ... Does that make sense?
[16:09] mikko you could do a small device that handles the authentication
[16:09] mikko and forwards the messages using inproc
[16:10] mikko so your client code would communicate with inproc and the device decorates with authentication info and forwards the messages
[16:13] Remoun sounds good
[16:13] Remoun thanks mikko
[16:24] shales hi, has anyone used eventlet with zmq? I'm wondering if or how eventlet works with zmq.REP sockets or do I have to switch to XREP sockets to avoid the state kept in the REP socket from messing up with multiple threads?
[16:30] mikko shales: sorry, no idea what eventlet is
[16:30] mikko shales: is it ruby?
[16:31] mikko ah, python
[16:31] shales python
[16:31] shales it's ok, someone on #eventlet just gave me an easy workaround
[16:31] shales just give each greenthread its own REP socket
[18:47] jhawk28 Hello. Congrats on the 2.1.0 beta!
[19:58] mikko mato: hmm, does 3.4.6 report that it supports dso visibility?
[20:00] mikko # elif (defined __GNUC__ && __GNUC__ >= 4) || defined __INTEL_COMPILER
[20:00] mikko this error reported makes no sense
[20:00] mato mikko: it shouldn't, i'm just replying asking for more info
[20:00] mato unless RHAT borked it of course :-)
[20:01] mikko but in any case it should not pass __GNUC__ >= 4
[20:01] mato ISTR some problems related to OpenPGM use of __attribute__((visibility)) on old RHAT also
[20:01] mikko downloading centos4 now
[20:01] mato :-)
[20:02] mikko
[20:02] mikko i got my eye on that
[20:02] mikko to add to build cluster
[20:02] mikko if the price doesn't go up much i'll try to snatch it
[20:04] prokos does ZMQ_SUBSCRIBE filter on the client side or the server side?
[20:04] mikko prokos: client side
[20:05] mato heh, I got offered a Sun Fire 15k for free some time ago, declined on the grounds that I don't have an empty data center and free electricity to run it...
[20:05] mikko if by client you mean the subscriber
[20:05] mikko mato: i'm hoping to put this in the server room at work
[20:05] mikko and as a backup plan im gonna ship it to finland
[20:06] mato well, 50 GBP is damn cheap
[20:06] prokos yes i mean the subscriber.. Is there a reason to not filter on the publisher side?
[20:07] mikko prokos: it's very complicated to implement but i think it's on the list of things to do
[20:11] jhawk28 has anyone seen this:
[20:20] mato mikko: I've forwarded you the outputs Chris Patti sent me just now
[20:20] mato mikko: It looks to me like his GCC claims to support -fvisibility=hidden but the results are completely bogus
[20:20] mato mikko: the symbol table in is missing anything which would normally be hidden
[20:21] mikko mato: yes
[20:21] mato mikko: looks like we need an autoconf check for "Checking to see if g++ -fvisibility=hidden actually works" :-)
[20:21] mikko i got centos4 running soon
[20:22] mato no point in fighting with getting it to work on buggy/old compilers, but it shouldn't break completely...
[20:23] mikko mato: does it support the pragma?
[20:23] mikko if it supports -fvisibility
[20:24] mato probably not
[20:24] mato or it's some bastardized RHAT version
[20:26] mikko got centos4 running now
[20:27] mikko yum is _slow_ on centos4
[20:36] mikko mato: gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)
[20:36] mikko visibility works
[20:36] mikko no wait
[20:36] mikko it supports -fvisibility
[20:37] mikko but ignores the attribute
[20:37] mato geez
[20:37] mikko hmm
[20:37] mikko thats not completely true
[20:38] mikko
[20:38] mato well, in any case, we can't detect this case in zmq.h sanely
[20:39] mato so we need to account for it in the autoconf tests somehowe
[20:40] mato I reckon for now the easiest thing is to explicitly check the GCC version
[20:40] mato and not enable -fvisibility if it's < 4
[20:40] mikko yes, i was thinking the same
[20:40] mikko let me wrap a macro for that
[20:55] mikko brb
[21:17] prokos f
[22:10] mikko mato: take a look at when you got time
[22:41] jhawk28 hey sustrik
[22:43] sustrik hi
[22:47] Guthur is there tests for the new features?
[22:47] Guthur in 2.1.0