Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Trying to track down a hang regression #350

Closed
drewcrawford opened this Issue Mar 29, 2013 · 5 comments

Comments

Projects
None yet
2 participants

Hi guys,

I've got a libzmq 3.x client, and a pyzmq server.

I usually install with pip. When I updated to pyzmq 13.x, it causes my client to hang. When I downgrade to 2.2.0.1, the hang goes away.

I tried to check out trunk and run a git bisect to find a bad commit. I'm using the command

sudo python setup.py clean install --zmq=bundled

But what I discovered instead was that all the tags in trunk cause the hang. It's only the pip version of 2.2.0.1 that works for me, the git version hangs. I'm not really sure what's so unique about the pip egg in 2.2.0.1 that is so special from trunk 2.2.0.1 and from egg 13.0.2.

The only thing that I thought of was maybe the pip egg uses some prebuilt binary that my compiler doesn't build well (I use clang), so I swapped it for GCC:

CC=gcc python setup.py clean install

and other variations like CFLAGS="-O0" just to see if that would have any effect. It didn't: no matter how I build the source, it hangs.

For now I am downgrading to pip egg 2.2.0.1, but if somebody has more familiarity with why I could be seeing this behavior I am happy to try additional debugging steps.

Owner

minrk commented Mar 29, 2013

pip and egg are mutually exclusive - pip does not install eggs, it always builds from source.

One significant difference between the tarballs on PyPI and the tags on git is the generated .c sources - only the Cython sources are tracked in git, but the generated C files are included in the tarballs associated with the tag.

Can you post some code that reproduces the issue, and perhaps your Cython version, etc.?

It is hard to post code that demonstrates the issue, because the client that hangs is running in a non-Python dev environment. If you have access to XCode on OSX 10.8.3, it may be possible for me to produce a small client test case.

cython --version
Cython version 0.18

Sorry, diff was bad. Hang on while I produce a new one.

It seems that my test setup and previous comments are invalid because python setup.py clean leaves the bundled directory intact. When I manually clean, I can build a successful 2.2.1.0, but not a successful 13.0.2.

It seems that the underlying issue here is upstream, because the difference is the version of libzmq used by pyzmq (2.x vs 3.x). It seems odd to me that a 3.x server and 3.x client have more problems than a 2.x server and a 3.x client, but it seems to be the behavior.

I will try bisecting on the libzmq side to see if I can find a bad commit there.

Owner

minrk commented Mar 29, 2013

what is the version of libzmq you are using in the client side?

It looks like on the client side I was using 3.2.0, which was an RC build. After pulling up to 3.2.2 (stable), it seems to work okay with all the versions of pyzmq. There's been at least one hang for 2.x talking to 3.x addressed in the interim, so I'm thinking that explains it.

I guess that will teach me to be more careful about running RCs and expecting on-the-wire compatability! Thanks for your help, sorry to trouble you with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment