-
Notifications
You must be signed in to change notification settings - Fork 821
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
qpidd unable to bind any port #996
Comments
Just to check: run Adding that to your report would increase its completeness. |
@rodrymbo thank you for the suggestion. I did run netstat to confirm there is no interference. before posting this bug submit I did try different ports. When you run -p0 the program tries to find a available port. when I run
|
Looks same as #674. |
@michaelinipop - Thanks for reporting the issue and trying out WSL! @therealkenc is correct in pointing out that the issue is with the lack of proper support for IPV6_V6ONLY in WSL (see the trace snippets below). The problem is that WSL allows the app to set the IPV6_V6ONLY socket option to be set on a socket, but when it is not currently able to interact with the network layer to fully honor the option. In that case, when a socket sets this option and tries to bind to a IPV6 address on a given port, it also tries to reserve the same port for IPV4 traffic and runs into collisions as below. This is something we are aware of and are actively working with the networking team to resolve the issue at our end. Meanwhile, if you can force the app to only work with IPV4 address (or use different addresses for IPV4 and IPV6), you may be able to work around the issue. We apologize for the inconvenience, but hopefully the real fix is coming soon. ` setsockopt(10, SOL_IPV6, IPV6_V6ONLY, [1], 4) = 0 bind(10, {sa_family=AF_INET6, sin6_port=htons(5672), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EADDRINUSE (Address already in use) |
With the help of the Windows networking team, we were able to fully implement the IPV6_V6ONLY flag. With that change the |
@sunilmut Thank you so much for following up on this. I can easily imagine how technical it is to support almost every edge case within the posix command set. Nevertheless, I look forward to seeing this working. |
FUTEX_CMP_REQUEUE_PRIVATE (#1006 and friends) is rearing it's head more now that IPC over sockets is working much better. I wonder (out loud without a lot of basis) whether it can be stubbed in WSL somehow as a first step, rather than trying to get the semantics correct all at once. In most/all the OSS code I've come across, the software doesn't really care if there is a thundering herd of threads/processes waking up only to go right back to sleep. Because in reality there is no herd; there's a few cows standing around. The real problem is that glibc pthreads thinks the kernel functionality is there, so it gets used. Anyway, just a thought. I haven't looked at the glibc pthread implementation to see if it is possible to just lie. The musl pthread implementation doesn't even use it AFAICT. |
Just FYI that the IPV6_V6ONLY issue is fixed in 14936 (see release notes) |
I've added support for FUTEX_CMP_REQUEUE. The change will be in an Insider build soon. |
The fixinbound tag sailed here back in August, so this is fixedinfallcreatorsupdate by fiat. If there are still problems with the |
Hi Guys,
I figure you guys are dealing with similar bugs that I am experiencing. I was wanting to use QPIDD on the Linux bash build for a Microsoft conference talk I am doing. When I am starting the message broker for my application I get a nasty error stating that I am unable to bind my application to a port. I suspect it is an issues with the Accept socket function implementation.
*error code and source file
2016-08-27 16:02:22 critical Unexpected error: Can't bind to port [::]:60181: Address already in use (qpid/sys/posix/Socket.cpp:206)
https://apache.googlesource.com/qpid/+/asyncstore/cpp/src/qpid/sys/posix/BSDSocket.cpp
14393
Turned off firewall and ran the cmd in administrator mode.
bash
sudo apt-get install qpidd
sudo qpidd --port=0 or just sudo qpidd
https://gist.github.com/michaelinipop/9907a6d8f47a2ce74ceb5becae3e14ba
qpidd
Thanks guys,
michael
The text was updated successfully, but these errors were encountered: