Thread: Re: [Tnfox-discussion] Uncaught bounce notification
Brought to you by:
ned14
From: Niall D. <s_s...@ne...> - 2008-09-22 21:16:23
|
On 22 Sep 2008 at 11:10, sit...@li... wrote: > The attached message was received as a bounce, but either the bounce > format was not recognized, or no member addresses could be extracted > from it. This mailing list has been configured to send all > unrecognized bounce messages to the list administrator(s). Looks like you had a problem reaching the list. > I decided to use IPC framework for threads communication. > > After sending message from thread to main thread: > > > FXERRHM(wc = new WindowConnector(this, *pipe)); > > wc->channel()->start(true); > > ... > > TestMarketMsg_Action act(1); > > wc->channel()->sendMsg(act); > > > the exception is generated: > > > Thread 5808 sending msg 0x83 (struct TestMarketMsg_Action), len=34 > bytes > FXException id 1 created, 'Maximum message size exceeded > (570425344 > with limit of 65536)' > > at line 387 in src\FXIPC.cxx thread 2656 > > Exception occurred in thread 2656 (IPC channel monitor): Maximum > message size exceeded > > (570425344 with limit of 65536) (code 0x7C8B4603 file > > src\FXIPC.cxx line 387 in FX::FXIPCChannel::doReception() thread 2656) > > > Stack backtrace: > > 0x620021B1:<unknown> FX::FXException::FXException +0x41 > > (file fxexception.h line > no 389) > > 0x62250EF4:<unknown> FX::FXIPCChannel::doReception +0x6b4 > > (file fxipc.cxx line > no 387) > > 0x6224E127:<unknown> FX::FXIPCChannel::run +0x27 > > (file fxipc.h line no > 817) > > 0x6231F834:<unknown> FX::QThreadPrivate::run +0x1e4 > > (file qthread.cxx line no > 1030) > > 0x623211B9:<unknown> FX::start_thread +0xb9 > > (file qthread.cxx line no > 788) > > 0x623210EC:<unknown> FX::start_threadwin +0xc > > (file qthread.cxx line no > 841) > > 0x7C80B6A3:<unknown> GetModuleFileNameA +0x1b4 > > (file <unknown> line no > 0) > > <backtrace ends> > > Thread 2656 (IPC channel monitor) cleanup > > Attempting to send Disconnect message to other end of IPC connection > > Thread 2656 sending msg 0x1 (struct FX::FXIPCMsg_Disconnect), len=18 > bytes > > Succeeded in sending Disconnect message to other end of IPC connection! > > Thread 560 received msg 0x1 (struct FX::FXIPCMsg_Disconnect), len=18 > bytes > > class WindowConnector *@02DAB320: msgReceived() > > I think the exception is generated at reception in main thread. > I do not know, what else i must post for detecting the problem.. > Strange what message size is 570425344.. > > Where I could wrong? Are you sure you are defining & registering the message chunk correctly as per the documentation and source code examples? Your error above suggests a serialisation/deserialisation mismatch in the message sent before that message - the exception you got is a trap for that problem. There is some #ifdef DEBUG code in the FXIPCChannel source which may help and there are even more debug outputs which can be commented into working too. One of them even dumps a byte output of bytes received & sent so you should definitely find where the problem is. Cheers, Niall |
From: Ck <ld...@ya...> - 2008-09-23 07:37:56
|
>> The attached message was received as a bounce, but either the bounce >> format was not recognized, or no member addresses could be extracted >> from it. This mailing list has been configured to send all >> unrecognized bounce messages to the list administrator(s). >> > > Looks like you had a problem reaching the list. > > Sorry, i wrote wrong email - tnf...@li... > Are you sure you are defining & registering the message chunk > correctly as per the documentation and source code examples? > > I looked at the docs & TestIPC example and I do the only the following steps for defining & registering IPC messages: > typedef FX::FXIPCMsgChunkCodeAlloc<0x80, true> MsgChunkBegin; > struct TestMarketMsg_Error : public FX::FXIPCMsg > { > typedef FX::FXIPCMsgChunkCodeAlloc<MsgChunkBegin::code, false> id; > typedef FX::FXIPCMsgRegister<id, TestMarketMsg_Error> regtype; > int code; > TestMarketMsg_Error() : FX::FXIPCMsg(id::code), code(0) { } > TestMarketMsg_Error(int c): FX::FXIPCMsg(id::code), code(c){} > void endianise(FX::FXStream &ds) const { ds << code; } > void deendianise(FX::FXStream &ds) { ds >> code; } > }; > //-------------------------------------------------------------------------------- > struct TestMarketMsg_Action : public FX::FXIPCMsg > { > typedef FX::FXIPCMsgChunkCodeAlloc<TestMarketMsg_Error::id::nextcode, false> id; > typedef FX::FXIPCMsgRegister<id, TestMarketMsg_Action> regtype; > int code; > TestMarketMsg_Action(int c=0) > : FX::FXIPCMsg(id::code), code(c){ } > void endianise(FX::FXStream &ds) const { ds << code; } > void deendianise(FX::FXStream &ds) { ds >> code; } > }; > //-------------------------------------------------------------------------------- > > typedef FX::FXIPCMsgChunk<FX::Generic::TL::create< > TestMarketMsg_Error::regtype, > TestMarketMsg_Action::regtype > >::value> MsgChunk; and in class: > void IPCController::channelInstall() > { > FXERRHM(m_chunk = new MsgChunk(&m_channel->registry())); > ... after > TestMarketMsg_Action act(1); > wc->channel()->sendMsg(act); I have the exception. > Your error above suggests a serialisation/deserialisation mismatch in > the message sent before that message - the exception you got is a > trap for that problem. There is some #ifdef DEBUG code in the > FXIPCChannel source which may help and there are even more debug > outputs which can be commented into working too. One of them even > dumps a byte output of bytes received & sent so you should definitely > find where the problem is. > > Ok, I'll try to use this. Thanks for your answers, Niall. |