面向Nack的可靠多播(NORM)

时间:2011-08-17 10:20:54

标签: c++ networking network-programming multicast

我有一个关于" Nack Oriented Reliable Multicast" (规范)。有时接收器会出现以下堆栈跟踪:

2011/08/16 11:38:55 - signals.cpp:73: Segmentation Fault!
2011/08/16 11:38:55 - signals.cpp:74: PID = 467
2011/08/16 11:38:55 - signals.cpp:75: info.si_signo = 11
2011/08/16 11:38:55 - signals.cpp:76: info.si_errno = 0
2011/08/16 11:38:55 - signals.cpp:78: info.si_code  = 1 [SEGV_MAPERR]
2011/08/16 11:38:55 - signals.cpp:83: info.si_addr  = 0x1f51
2011/08/16 11:38:55 - signals.cpp:159: reg[00] = 0xe7b6c70816994fb2
2011/08/16 11:38:55 - signals.cpp:159: reg[01] = 0xb6c70868e94f1391
2011/08/16 11:38:55 - signals.cpp:159: reg[02] = 0x0000003fa5be8121
2011/08/16 11:38:55 - signals.cpp:159: reg[03] = 0x0000000000000000
2011/08/16 11:38:55 - signals.cpp:159: reg[04] = 0x00000000102c1e10
2011/08/16 11:38:55 - signals.cpp:159: reg[05] = 0x0000000000000170
2011/08/16 11:38:55 - signals.cpp:159: reg[06] = 0x000000001020ae20
2011/08/16 11:38:55 - signals.cpp:159: reg[07] = 0x0000000000000002
2011/08/16 11:38:55 - signals.cpp:159: reg[08] = 0x000000001028b268
2011/08/16 11:38:55 - signals.cpp:159: reg[09] = 0x0000000044367b8c
2011/08/16 11:38:55 - signals.cpp:159: reg[10] = 0x0000000000001f51
2011/08/16 11:38:55 - signals.cpp:159: reg[11] = 0x000000001028b268
2011/08/16 11:38:55 - signals.cpp:159: reg[12] = 0x00000000000000ea
2011/08/16 11:38:55 - signals.cpp:159: reg[13] = 0x00000000102c1e80
2011/08/16 11:38:55 - signals.cpp:159: reg[14] = 0x00000000000001ea
2011/08/16 11:38:55 - signals.cpp:159: reg[15] = 0x0000000044367b40
2011/08/16 11:38:55 - signals.cpp:159: reg[16] = 0x0000003ce5a53f52
2011/08/16 11:38:55 - signals.cpp:159: reg[17] = 0x0000000000010202
2011/08/16 11:38:55 - signals.cpp:159: reg[18] = 0x0000000000000033
2011/08/16 11:38:55 - signals.cpp:159: reg[19] = 0x0000000000000004
2011/08/16 11:38:55 - signals.cpp:159: reg[20] = 0x000000000000000e
2011/08/16 11:38:55 - signals.cpp:159: reg[21] = 0x0000000000006a07
2011/08/16 11:38:55 - signals.cpp:159: reg[22] = 0x0000000000001f51
2011/08/16 11:38:55 - signals.cpp:93: Stack trace:
2011/08/16 11:38:55 - signals.cpp:148:   /lib64/libpthread.so.0 [0x37c720eb10]
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormSegmentPool::Get()+0x1a
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormStreamObject::WriteSegment(NormBlockId, unsigned short, char const*)+0x590
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormObject::HandleObjectMessage(NormObjectMsg const&, NormMsg::Type, NormBlockId, unsigned short)+0xf79
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormSenderNode::HandleObjectMessage(NormObjectMsg const&)+0xfb1
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormSession::ReceiverHandleObjectMessage(timeval const&, NormObjectMsg const&, bool)+0x2b4
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormSession::HandleReceiveMessage(NormMsg&, bool, bool)+0xfd
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : NormSession::RxSocketRecvHandler(ProtoSocket&, ProtoSocket::Event)+0x87
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : ProtoSocket::LISTENER_TYPE<NormSession>::on_event(ProtoSocket&, ProtoSocket::Event)+0x33
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : ProtoSocket::OnNotify(ProtoSocket::Flag)+0x1c8
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : ProtoDispatcher:ispatch()+0xb2
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : ProtoDispatcher::Run(bool)+0x1a8
2011/08/16 11:38:55 - signals.cpp:138:   /usr/lib64/libnorm_wrapper.so.2.0 : ProtoDispatcher:oThreadStart(void*)+0x94
2011/08/16 11:38:55 - signals.cpp:148:   /lib64/libpthread.so.0 [0x37c720673d]
2011/08/16 11:38:55 - signals.cpp:143:   /lib64/libc.so.6 : clone()+0x6d
2011/08/16 11:38:55 - signals.cpp:154: End of stack trace.
(END)

库配置为以流模式工作。 安装的版本是: 范静,1.4b4-0 范数1.4b4-0 PROTOLIB-2.1b1-0 PROTOLIB静电-2.1b1-0

您能分享一些关于这个图书馆的信息吗?对生产环境可靠吗?它有任何替代实现吗?

1 个答案:

答案 0 :(得分:0)

Planète广播还提供了另一种NORM实现,但它不是新的。

http://planete-bcast.inrialpes.fr/rubrique.php3?id_rubrique=4

我建议尝试使用支持的主动可靠多播协议,并提供100%偏差:

http://en.wikipedia.org/wiki/Pragmatic_General_Multicast

我对协议的实施:

http://code.google.com/p/openpgm/