Hi Shan,

> Thanks for the reply.

You're welcome.

> But this may be a different problem. After searched on 
> internet I think
> this problem was from the QPID_TSS declaration in 
> AsynchIO.cpp, which is __declspec(thread) on windows. 

Right.

> MSDN said thread local storage can only work when a dll is 
> linked to an
> executable. If loadLibrary() is used to load the dll, an 
> system failure
> will occur. And this is exactly what happened in my program. I made
a
> Tcl wrapper of qpid API and tried to load the dll within tcl, 
> then I got
> the exception said the program is trying to access memory 0x000000.

I have seen this happen in a situation where a DLL was built that
included the qpid libs as static, then the DLL was loaded dynamically
at run-time - then this exact crash occurred.

However, that situation was resolved when qpidclient and qpidcommon
were built as DLLs and linked to the dynamically-loaded DLL.

> So basically on any windows system prior to Vista, qpid c++ client
can
> not be used as a plugin to another program.

I don't think this is the case... I tried this scenario with what's on
the 0.5-release branch and it worked. I recommend you try it as well.

> I had a quick look in your
> JIRA but didn't find a project for this. Now I'm trying to rebuild
the
> client lib without QPID_TSS and assumingly variables like
> threadWriteTotal will only be used by one thread, I will be 
> able to get around this issue.

The TSS usage is in qpidcommon.dll, though, which also runs in the
broker using multiple threads.

The only way to avoid the __declspec(thread) is the create the TSS
slots as needed at run time.

But, again, please try this with the 0.5-release branch and let us
know how it goes.

-Steve

> -----Original Message-----
> From: Steve Huston [mailto:[email protected]] 
> Sent: 26 March 2009 14:41
> To: [email protected]
> Subject: RE: Exception thrown from qpidcommon.dll on windows
> 
> Hi Shan,
> 
> You may be seeing the affects of QPID-1550
> (https://issues.apache.org/jira/browse/QPID-1550)
> 
> The QPID-1673 branch has been merged to trunk - I recommend you
either
> switch to trunk, use the 0.5-release branch (which is close to being
> M5), or wait for the 0.5 (M5) release. QPID-1550 is fixed in all of
> those.
> 
> -Steve
> 
> --
> Steve Huston, Riverace Corporation
> Check out my networked programming blog at
> http://stevehuston.wordpress.com/
> 
> 
> > -----Original Message-----
> > From: Shan Wang [mailto:[email protected]] 
> > Sent: Thursday, March 26, 2009 8:32 AM
> > To: [email protected]
> > Subject: Exception thrown from qpidcommon.dll on windows
> > 
> > 
> > Hi All,
> > 
> >  
> > 
> > I built a client dll from QPID-1673 branch(which I believe is 
> > the first
> > usable windows dll branch). In the beginning everything seems 
> > fine, then
> > I found this exception thrown somewhere from qpidcommon.dll, and
the
> > call stack is shown below:
> > 
> >  
> > 
> >  
> > 
> > qpidcommon.dll!qpid::sys::windows::AsynchIO::writeComplete()  +
0x46
> > bytes      C++
> > 
> > qpidcommon.dll!qpid::sys::windows::AsynchIO::completion()  + 
> > 0x12f bytes
> > C++
> > 
> > qpidcommon.dll!boost::detail::function::void_function_obj_invo
> > ker1<boost
> > ::_bi::bind_t<void,boost::_mfi::mf1<void,qpid::sys::PollableCo
> > nditionPri
> > vate,qpid::sys::AsynchIoResult
> > *>,boost::_bi::list2<boost::_bi::value<qpid::sys::PollableCond
> > itionPriva
> > te *>,boost::arg<1> > >,void,qpid::sys::AsynchIoResult
*>::invoke()
> +
> > 0x10 bytes C++
> > 
> > qpidcommon.dll!boost::function1<void,qpid::sys::Socket const
> > &,std::allocator<boost::function_base> >::operator()()  + 0x4e
bytes
> > C++
> > 
> > qpidcommon.dll!qpid::sys::AsynchWriteResult::complete()  + 0x18
> bytes
> > C++
> > 
> > qpidcommon.dll!qpid::sys::AsynchResult::success()  + 0x15 bytes
C++
> > 
> > qpidcommon.dll!qpid::sys::Poller::wait()  + 0xd3 bytes
C++
> > 
> > qpidcommon.dll!qpid::sys::Poller::run()  + 0x29 bytes
C++
> > 
> > qpidclient.dll!qpid::client::TCPConnector::run()  + 0x11c bytes
> > C++
> > 
> > msvcr90.dll!785838bb()          
> > 
> >  [Frames below may be incorrect and/or missing, no symbols loaded
> for
> > msvcr90.dll]       
> > 
> > qpidcommon.dll!`anonymous namespace'::runRunnable()  + 0xb bytes
> > C++
> > 
> >  
> > 
> >  
> > 
> > Does anyone have a idea what is this about?
> > 
> >  
> > 
> >  
> > 
> > Thanks and Regards,
> > 
> > Shan
> > 
> > The information contained in this email is strictly 
> > confidential and for the use of the addressee only, unless 
> > otherwise indicated. If you are not the intended recipient, 
> > please do not read, copy, use or disclose to others this 
> > message or any attachment. Please also notify the sender by 
> > replying to this email or by telephone (+44 (0)20 7896 0011) 
> > and then delete the email and any copies of it. Opinions, 
> > conclusions (etc.) that do not relate to the official 
> > business of this company shall be understood as neither given 
> > nor endorsed by it. IG Index plc is a company registered in 
> > England and Wales under number 01190902. VAT registration 
> > number 761 2978 07. Registered Office: Friars House, 157-168 
> > Blackfriars Road, London SE1 8EZ. Authorised and regulated by 
> > the Financial Services Authority. FSA Register number 114059.
> > 
> 
> 
>
---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[email protected]
> 
> The information contained in this email is strictly 
> confidential and for the use of the addressee only, unless 
> otherwise indicated. If you are not the intended recipient, 
> please do not read, copy, use or disclose to others this 
> message or any attachment. Please also notify the sender by 
> replying to this email or by telephone (+44 (0)20 7896 0011) 
> and then delete the email and any copies of it. Opinions, 
> conclusions (etc.) that do not relate to the official 
> business of this company shall be understood as neither given 
> nor endorsed by it. IG Index plc is a company registered in 
> England and Wales under number 01190902. VAT registration 
> number 761 2978 07. Registered Office: Friars House, 157-168 
> Blackfriars Road, London SE1 8EZ. Authorised and regulated by 
> the Financial Services Authority. FSA Register number 114059.
> 
>
---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[email protected]
> 
> 


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to