You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by diedie <yu...@gvdigital.com> on 2010/01/15 09:32:28 UTC
Handle leaks using CMS-3.1
Hi,
I recently upgraded my cms library from 3.0 to 3.1(built using vs-2005),
and face some issues that handle leaks when reconnecting to server.
So I wrote a simple testing program based on vs2005-activemq-example,
and found that it occurs even I just create the connection and close it.
Has any one encountered this before?
Or is there anything I should notice but missed?
Any reply is appreciated.
Here is the code I wrote for testing.
==============================
while(true){
ConnectionFactory* connectionFactory(
ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" )
);
Connection* connection = connectionFactory->createConnection();
connection->start();
connection->close();
delete connection;
connection = NULL;
delete connectionFactory;
connectionFactory = NULL;
Sleep(2000);
}
=============================
And following are the reports generated using DebugDiag.
It's strange that it leaks in different when I using different linking
method.
Static Linking case :
Function msvcr80d!_beginthreadex+fd
Allocation type Thread handle(s)
Handle Count 816 handle(s)
Leak Probability 100%
Call stack sample 1
Handle 0x00001448 Allocation Time 00:05:26 since tracking started
Function Source Destination
msvcr80d!_beginthreadex+fd
f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 206
kernel32!CreateThread
vs2005_activemq_example!decaf::lang::Thread::start+13b
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\lang\thread.cpp
@ 378 msvcr80d!_beginthreadex
msvcr80d!_free_dbg+5d f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c @
1222
msvcr80d!operator delete+c6
f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp @ 56
vs2005_activemq_example!activemq::transport::IOTransport::start+1de
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\iotransport.cpp
@ 166
vs2005_activemq_example!activemq::transport::TransportFilter::start+53
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\transportfilter.cpp
@ 90
vs2005_activemq_example!activemq::transport::correlator::ResponseCorrelator::start+113
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\correlator\responsecorrelator.cpp
@ 243
vs2005_activemq_example!activemq::core::ActiveMQConnection::ActiveMQConnection+21b
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnection.cpp
@ 80
vs2005_activemq_example!activemq::core::ActiveMQConnectionFactory::createConnection+39c
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
@ 143
vs2005_activemq_example!main+14a
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
397
vs2005_activemq_example!mainCRTStartup+d
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
kernel32!BaseProcessStart+23
Dynamic Linking case :
Function
libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
Allocation type Semaphore handle(s)
Handle Count 2730 handle(s)
Leak Probability 100%
Call stack sample 1
Handle 0x00000784
Allocation Time 00:05:06 since tracking started
Function Source Destination
libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\internal\util\concurrent\windows\conditionimpl.cpp
@ 47 kernel32!CreateSemaphoreA
libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransport::initialize+452
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransport.cpp
@ 129
libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::doCreateComposite+12d
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
@ 99
libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::create+c1
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
@ 53
libactivemq_cpp_31_vc80_mt_d!activemq::core::ActiveMQConnectionFactory::createConnection+2df
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
@ 133
vs2005_activemq_example!main+168
e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
397
vs2005_activemq_example!mainCRTStartup+d
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
kernel32!BaseProcessStart+23
--
View this message in context: http://old.nabble.com/Handle-leaks-using-CMS-3.1-tp27173352p27173352.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
Re: Handle leaks using CMS-3.1
Posted by Timothy Bish <ta...@gmail.com>.
On Fri, 2010-01-15 at 00:32 -0800, diedie wrote:
> Hi,
>
> I recently upgraded my cms library from 3.0 to 3.1(built using vs-2005),
> and face some issues that handle leaks when reconnecting to server.
>
> So I wrote a simple testing program based on vs2005-activemq-example,
> and found that it occurs even I just create the connection and close it.
> Has any one encountered this before?
> Or is there anything I should notice but missed?
>
> Any reply is appreciated.
If you could open a new Jira info and attach this info there it would
help to ensure that this issue doesn't get lost on the mailing list. It
looks like there could be a leak in the ConditionImpl class, which is
new for this release.
Regards
Tim.
>
>
> Here is the code I wrote for testing.
> ==============================
> while(true){
> ConnectionFactory* connectionFactory(
> ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" )
> );
>
> Connection* connection = connectionFactory->createConnection();
> connection->start();
> connection->close();
> delete connection;
> connection = NULL;
> delete connectionFactory;
> connectionFactory = NULL;
> Sleep(2000);
> }
> =============================
>
> And following are the reports generated using DebugDiag.
> It's strange that it leaks in different when I using different linking
> method.
>
> Static Linking case :
> Function msvcr80d!_beginthreadex+fd
> Allocation type Thread handle(s)
> Handle Count 816 handle(s)
> Leak Probability 100%
>
> Call stack sample 1
>
> Handle 0x00001448 Allocation Time 00:05:26 since tracking started
> Function Source Destination
> msvcr80d!_beginthreadex+fd
> f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 206
> kernel32!CreateThread
> vs2005_activemq_example!decaf::lang::Thread::start+13b
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\lang\thread.cpp
> @ 378 msvcr80d!_beginthreadex
> msvcr80d!_free_dbg+5d f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c @
> 1222
> msvcr80d!operator delete+c6
> f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp @ 56
> vs2005_activemq_example!activemq::transport::IOTransport::start+1de
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\iotransport.cpp
> @ 166
> vs2005_activemq_example!activemq::transport::TransportFilter::start+53
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\transportfilter.cpp
> @ 90
> vs2005_activemq_example!activemq::transport::correlator::ResponseCorrelator::start+113
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\correlator\responsecorrelator.cpp
> @ 243
> vs2005_activemq_example!activemq::core::ActiveMQConnection::ActiveMQConnection+21b
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnection.cpp
> @ 80
> vs2005_activemq_example!activemq::core::ActiveMQConnectionFactory::createConnection+39c
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
> @ 143
> vs2005_activemq_example!main+14a
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
> 397
> vs2005_activemq_example!mainCRTStartup+d
> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
> kernel32!BaseProcessStart+23
>
> Dynamic Linking case :
> Function
> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
> Allocation type Semaphore handle(s)
> Handle Count 2730 handle(s)
> Leak Probability 100%
>
> Call stack sample 1
>
> Handle 0x00000784
> Allocation Time 00:05:06 since tracking started
> Function Source Destination
> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\internal\util\concurrent\windows\conditionimpl.cpp
> @ 47 kernel32!CreateSemaphoreA
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransport::initialize+452
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransport.cpp
> @ 129
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::doCreateComposite+12d
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
> @ 99
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::create+c1
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
> @ 53
> libactivemq_cpp_31_vc80_mt_d!activemq::core::ActiveMQConnectionFactory::createConnection+2df
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
> @ 133
> vs2005_activemq_example!main+168
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
> 397
> vs2005_activemq_example!mainCRTStartup+d
> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
> kernel32!BaseProcessStart+23
>
--
Tim Bish
http://fusesource.com
http://timbish.blogspot.com/
Re: Handle leaks using CMS-3.1
Posted by diedie <yu...@gvdigital.com>.
Hi,
Thank you for your reply.
I do initialize and shutdown the library.
Here is the complete code.
int main(int argc AMQCPP_UNUSED, char* argv[] AMQCPP_UNUSED) {
activemq::library::ActiveMQCPP::initializeLibrary();
std::cout << "=====================================================\n";
std::cout << "Starting the example:" << std::endl;
std::cout << "-----------------------------------------------------\n";
while(true){
ConnectionFactory* connectionFactory(
ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" )
);
Connection* connection = connectionFactory->createConnection();
connection->start();
connection->close();
delete connection;
connection = NULL;
delete connectionFactory;
connectionFactory = NULL;
Sleep(2000);
}
activemq::library::ActiveMQCPP::shutdownLibrary();
}
Regards,
diedie
Timothy Bish wrote:
>
> On Fri, 2010-01-15 at 00:32 -0800, diedie wrote:
>> Hi,
>>
>> I recently upgraded my cms library from 3.0 to 3.1(built using vs-2005),
>> and face some issues that handle leaks when reconnecting to server.
>>
>> So I wrote a simple testing program based on vs2005-activemq-example,
>> and found that it occurs even I just create the connection and close it.
>> Has any one encountered this before?
>> Or is there anything I should notice but missed?
>>
>> Any reply is appreciated.
>>
>>
>> Here is the code I wrote for testing.
>> ==============================
>> while(true){
>> ConnectionFactory* connectionFactory(
>> ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616"
>> )
>> );
>>
>> Connection* connection = connectionFactory->createConnection();
>> connection->start();
>> connection->close();
>> delete connection;
>> connection = NULL;
>> delete connectionFactory;
>> connectionFactory = NULL;
>> Sleep(2000);
>> }
>> =============================
>>
>> And following are the reports generated using DebugDiag.
>> It's strange that it leaks in different when I using different linking
>> method.
>>
>> Static Linking case :
>> Function msvcr80d!_beginthreadex+fd
>> Allocation type Thread handle(s)
>> Handle Count 816 handle(s)
>> Leak Probability 100%
>>
>> Call stack sample 1
>
> So far I have not found any leaks. Did your complete application
> include code to initialize and shutdown the ActiveMQ-CPP library, its
> not included in the snippet.
>
> Regards
> Tim.
>
>>
>> Handle 0x00001448 Allocation Time 00:05:26 since tracking started
>> Function Source Destination
>> msvcr80d!_beginthreadex+fd
>> f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 206
>> kernel32!CreateThread
>> vs2005_activemq_example!decaf::lang::Thread::start+13b
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\lang\thread.cpp
>> @ 378 msvcr80d!_beginthreadex
>> msvcr80d!_free_dbg+5d f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
>> @
>> 1222
>> msvcr80d!operator delete+c6
>> f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp @ 56
>> vs2005_activemq_example!activemq::transport::IOTransport::start+1de
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\iotransport.cpp
>> @ 166
>> vs2005_activemq_example!activemq::transport::TransportFilter::start+53
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\transportfilter.cpp
>> @ 90
>> vs2005_activemq_example!activemq::transport::correlator::ResponseCorrelator::start+113
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\correlator\responsecorrelator.cpp
>> @ 243
>> vs2005_activemq_example!activemq::core::ActiveMQConnection::ActiveMQConnection+21b
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnection.cpp
>> @ 80
>> vs2005_activemq_example!activemq::core::ActiveMQConnectionFactory::createConnection+39c
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
>> @ 143
>> vs2005_activemq_example!main+14a
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
>> 397
>> vs2005_activemq_example!mainCRTStartup+d
>> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
>> kernel32!BaseProcessStart+23
>>
>> Dynamic Linking case :
>> Function
>> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
>> Allocation type Semaphore handle(s)
>> Handle Count 2730 handle(s)
>> Leak Probability 100%
>>
>> Call stack sample 1
>>
>> Handle 0x00000784
>> Allocation Time 00:05:06 since tracking started
>> Function Source Destination
>> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\internal\util\concurrent\windows\conditionimpl.cpp
>> @ 47 kernel32!CreateSemaphoreA
>> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransport::initialize+452
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransport.cpp
>> @ 129
>> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::doCreateComposite+12d
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
>> @ 99
>> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::create+c1
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
>> @ 53
>> libactivemq_cpp_31_vc80_mt_d!activemq::core::ActiveMQConnectionFactory::createConnection+2df
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
>> @ 133
>> vs2005_activemq_example!main+168
>> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
>> 397
>> vs2005_activemq_example!mainCRTStartup+d
>> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
>> kernel32!BaseProcessStart+23
>>
>
> --
> Tim Bish
> http://fusesource.com
> http://timbish.blogspot.com/
>
>
>
>
>
--
View this message in context: http://old.nabble.com/Handle-leaks-using-CMS-3.1-tp27173352p27235982.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
Re: Handle leaks using CMS-3.1
Posted by Timothy Bish <ta...@gmail.com>.
On Fri, 2010-01-15 at 00:32 -0800, diedie wrote:
> Hi,
>
> I recently upgraded my cms library from 3.0 to 3.1(built using vs-2005),
> and face some issues that handle leaks when reconnecting to server.
>
> So I wrote a simple testing program based on vs2005-activemq-example,
> and found that it occurs even I just create the connection and close it.
> Has any one encountered this before?
> Or is there anything I should notice but missed?
>
> Any reply is appreciated.
>
>
> Here is the code I wrote for testing.
> ==============================
> while(true){
> ConnectionFactory* connectionFactory(
> ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" )
> );
>
> Connection* connection = connectionFactory->createConnection();
> connection->start();
> connection->close();
> delete connection;
> connection = NULL;
> delete connectionFactory;
> connectionFactory = NULL;
> Sleep(2000);
> }
> =============================
>
> And following are the reports generated using DebugDiag.
> It's strange that it leaks in different when I using different linking
> method.
>
> Static Linking case :
> Function msvcr80d!_beginthreadex+fd
> Allocation type Thread handle(s)
> Handle Count 816 handle(s)
> Leak Probability 100%
>
> Call stack sample 1
So far I have not found any leaks. Did your complete application
include code to initialize and shutdown the ActiveMQ-CPP library, its
not included in the snippet.
Regards
Tim.
>
> Handle 0x00001448 Allocation Time 00:05:26 since tracking started
> Function Source Destination
> msvcr80d!_beginthreadex+fd
> f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 206
> kernel32!CreateThread
> vs2005_activemq_example!decaf::lang::Thread::start+13b
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\lang\thread.cpp
> @ 378 msvcr80d!_beginthreadex
> msvcr80d!_free_dbg+5d f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c @
> 1222
> msvcr80d!operator delete+c6
> f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp @ 56
> vs2005_activemq_example!activemq::transport::IOTransport::start+1de
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\iotransport.cpp
> @ 166
> vs2005_activemq_example!activemq::transport::TransportFilter::start+53
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\transportfilter.cpp
> @ 90
> vs2005_activemq_example!activemq::transport::correlator::ResponseCorrelator::start+113
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\correlator\responsecorrelator.cpp
> @ 243
> vs2005_activemq_example!activemq::core::ActiveMQConnection::ActiveMQConnection+21b
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnection.cpp
> @ 80
> vs2005_activemq_example!activemq::core::ActiveMQConnectionFactory::createConnection+39c
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
> @ 143
> vs2005_activemq_example!main+14a
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
> 397
> vs2005_activemq_example!mainCRTStartup+d
> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
> kernel32!BaseProcessStart+23
>
> Dynamic Linking case :
> Function
> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
> Allocation type Semaphore handle(s)
> Handle Count 2730 handle(s)
> Leak Probability 100%
>
> Call stack sample 1
>
> Handle 0x00000784
> Allocation Time 00:05:06 since tracking started
> Function Source Destination
> libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\internal\util\concurrent\windows\conditionimpl.cpp
> @ 47 kernel32!CreateSemaphoreA
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransport::initialize+452
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransport.cpp
> @ 129
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::doCreateComposite+12d
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
> @ 99
> libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::create+c1
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp
> @ 53
> libactivemq_cpp_31_vc80_mt_d!activemq::core::ActiveMQConnectionFactory::createConnection+2df
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp
> @ 133
> vs2005_activemq_example!main+168
> e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @
> 397
> vs2005_activemq_example!mainCRTStartup+d
> f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414
> kernel32!BaseProcessStart+23
>
--
Tim Bish
http://fusesource.com
http://timbish.blogspot.com/