You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
开了两个进程(A,B),A进程先启动,B进程后启动,当B进程启动成功后,A进程通过cluster模式向B进程发送消息报错。
堆栈信息:
#0 0x00007f36c86a434e in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 #1 0x00007f36c86a5795 in abort () at abort.c:91 #2 0x00007f36c869d8fe in __assert_fail_base (fmt=, assertion=0x4caf54 "(s->sending & 0xffff) != 0", file=0x4cae1b "skynet-src/socket_server.c", line=,
function=) at assert.c:94 #3 0x00007f36c869d9c0 in __assert_fail (assertion=0x4caf54 "(s->sending & 0xffff) != 0", file=0x4cae1b "skynet-src/socket_server.c", line=1195, function=0x4cb390 "dec_sending_ref") at assert.c:103 #4 0x000000000040dd5e in ctrl_cmd () at skynet-src/socket_server.c:1195 #5 0x000000000040e50b in socket_server_poll () at skynet-src/socket_server.c:1483 #6 0x000000000040bcab in skynet_socket_poll () #7 0x000000000040a9c7 in thread_socket () #8 0x00007f36c9347d74 in start_thread (arg=0x7f36c57f9700) at pthread_create.c:305 #9 0x00007f36c87572cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
对应代码:
static inline void
dec_sending_ref(struct socket_server *ss, int id) {
struct socket * s = &ss->slot[HASH_ID(id)];
// Notice: udp may inc sending while type == SOCKET_TYPE_RESERVE
if (s->id == id && s->protocol == PROTOCOL_TCP) {
assert((s->sending & 0xffff) != 0);
ATOM_DEC(&s->sending);
}
}
开了两个进程(A,B),A进程先启动,B进程后启动,当B进程启动成功后,A进程通过cluster模式向B进程发送消息报错。
堆栈信息:
#0 0x00007f36c86a434e in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67
#1 0x00007f36c86a5795 in abort () at abort.c:91
#2 0x00007f36c869d8fe in __assert_fail_base (fmt=, assertion=0x4caf54 "(s->sending & 0xffff) != 0", file=0x4cae1b "skynet-src/socket_server.c", line=,
function=) at assert.c:94
#3 0x00007f36c869d9c0 in __assert_fail (assertion=0x4caf54 "(s->sending & 0xffff) != 0", file=0x4cae1b "skynet-src/socket_server.c", line=1195, function=0x4cb390 "dec_sending_ref") at assert.c:103
#4 0x000000000040dd5e in ctrl_cmd () at skynet-src/socket_server.c:1195
#5 0x000000000040e50b in socket_server_poll () at skynet-src/socket_server.c:1483
#6 0x000000000040bcab in skynet_socket_poll ()
#7 0x000000000040a9c7 in thread_socket ()
#8 0x00007f36c9347d74 in start_thread (arg=0x7f36c57f9700) at pthread_create.c:305
#9 0x00007f36c87572cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
对应代码:
static inline void
dec_sending_ref(struct socket_server *ss, int id) {
struct socket * s = &ss->slot[HASH_ID(id)];
// Notice: udp may inc sending while type == SOCKET_TYPE_RESERVE
if (s->id == id && s->protocol == PROTOCOL_TCP) {
assert((s->sending & 0xffff) != 0);
ATOM_DEC(&s->sending);
}
}
不知是啥原因,若忽略掉assert((s->sending & 0xffff) != 0)也能正常跑,就是不知道会造成啥后果
The text was updated successfully, but these errors were encountered: