-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
assert disabling and enabling network card on linux #1399
Comments
It'd be better to catch specific errors. Can you find out what the errno is On Thu, May 14, 2015 at 12:45 PM, Michele Dionisio <notifications@github.com
|
I'm testing it on an embedded device with linux 2.6.37. I have no access to stderr, so I have to build a special version of zmq that log that error on file, so I need few time to answer to your question. It is possible to insert a compile option to:
|
You can't remove asserts, these are always for cases where the code does On Sat, May 16, 2015 at 11:09 AM, Michele Dionisio <notifications@github.com
|
the errno is EINVAL = 22 |
Michele, Could you retest on libzmq master and tell us the stack backtrace if it's Thanks On Fri, Oct 30, 2015 at 2:06 PM, Michele Dionisio notifications@github.com
|
On libzmq 4.1.3 there is the same issue and the same fix (but on file src/tcp.cpp) solve the problem. patch:
|
I'm reading old isses and I think my one is duplicated of #829. I'm using PUB-SUB pattern but the result is the same. |
This causes assertion failures after network reconnects. Solution: allow EINVAL as a possible condition after read/write. Fixes zeromq#829 Fixes zeromq#1399 Patch provided by Michele Dionisio @mdionisio, thanks :)
OK, fixed on master and backported to 4-1 stable. Thanks! On Sat, Oct 31, 2015 at 6:19 PM, Michele Dionisio notifications@github.com
|
I have the following stack trace:
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x44670450 (LWP 243)]
0x40406460 in __GI_raise (sig=sig@entry=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
#0 0x40406460 in __GI_raise (sig=sig@entry=6)
#1 0x40409e88 in GI_abort () at abort.c:89
#2 0x403ad728 in zmq::zmq_abort (errmsg=) at err.cpp:76
#3 0x403c0000 in read (this=, data=,
#4 zmq::stream_engine_t::read (this=, data_=,
#5 0x403c070c in zmq::stream_engine_t::in_event (this=0x41b14000)
#6 0x403ad1fc in zmq::epoll_t::loop (this=0x166370) at epoll.cpp:154
#7 0x403c41ec in thread_routine (arg_=0x1663b8) at thread.cpp:83
#8 0x4004efc4 in start_thread (arg=0x44670450) at pthread_create.c:314
#9 0x404a7b30 in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/clone.S:97
from /lib/libc.so.6
#10 0x404a7b30 in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/clone.S:97
from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Simply removing the errno_assert in
int zmq::stream_engine_t::read (void *data_, size_t size_)
the problem is solved.
The text was updated successfully, but these errors were encountered: