Program Crashes with Performance Analyzer

Program Crashes with Performance Analyzer

Hi , I am currently experimenting with the Intel Vtune Performance Analyzer 2013 on Windows 7. My release build application seems to work fine however when I attempt to run the application from Performance Analyzer my 32 bit application just hangs. I am using VS2010 and QT. Any suggetsions on what might be going wrong ?

17 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

Create a console Window with Win32 API and output some information there using printf CRT-function from several check-points created in sources. At least you will be able to see what application does when it hangs.

So after creating a log file. I noticed that it hangs during creation of threads. I have a for loop that creates a specific noumber of threads (That vary from 4 to 15) and if a no is large it simply hangs up. Any suggestions on how i may resolve that issue ?

>>>So after creating a log file. I noticed that it hangs during creation of threads. I have a for loop that creates a specific noumber of threads (That vary from 4 to 15) and if a no is large it simply hangs up. Any suggestions on how i may resolve that issue ?>>>

How do you create threads?Do you use WinApi CreateThread() function?If you do can you put a breakpoint on this function call and inspect return value.

You mentioned log file please post it?

No I am using Boost thread to create the threads. I believe it uses the Win32 API underneath to create the threads. The log file I generated was custom made it just helped me diagnose where my program was hanging when launched by the performance analyzer

>>>No I am using Boost thread to create the threads. I believe it uses the Win32 API underneath to create the threads>>>

Probably yes.

>>>and if a no is large it simply hangs up.>>>

What do you mean by writing this?Is this related to number of threads created.

Yes I believe it has something to do with the number of threads created. I am not sure why it has an issue with that.

Are you running low on memory?Or do you have  large memory allocation?If you could post return value of CreateThread function,but you will need to use debugger for this.

>>...Yes I believe it has something to do with the number of threads created. I am not sure why it has an issue with that...

On 32-bit and 64-bit Windows platforms you could create thousands of threads and an actual number of threads depends on how much memory is allocated for the stack of a thread and how much total memory ( Physical plus Virtual ) a system has. I'll give you some example later.

Try to debug the codes since the description of the problem is too generic in order to understand what could be wrong.

>>...If you could post return value of CreateThread function, but you will need to use debugger for this...

Debugger is Not needed to get an error code and a call to GetLastError Win32 function should provide you with exact reason why some thread was not created.

Here are a couple of threads related to threads creation on a Windows platform:

Forum Topic: Relationship between number of threads in OpenMP application and memory used
Web-link: http://software.intel.com/en-us/forums/topic/279381

Forum Topic: Stress testing of Intel OpenMP library - More than 18,600 OpenMP threads created in a parallel region
Web-link: http://software.intel.com/en-us/forums/topic/278302

Forum Topic: Couldn't create more than 64 OpenMP threads in a test application
Web-link: http://software.intel.com/en-us/forums/topic/279487

Here are some numbers for a 32-bit Windows XP OS:


...

//	Release configuration

//

	RTuint uiStackSize;			// Operating System: Windows XP 32-bit

							// C++ compiler	    MSC         BCC         MGW         ICC

//	#define _STACK_SIZE	      0		// Threads created:

//	#define _STACK_SIZE	   1024		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	   2048		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	   4096		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	   8192		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	  16384		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	  32768		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	  65536		// 		  30,548   30,575   30,716   30,533

//	#define _STACK_SIZE	 131072		// 		  15,735   15,750   15,823   15,727

//	#define _STACK_SIZE	 262144		// 		   7,985    7,995    8,032    7,980

//	#define _STACK_SIZE	 524288		// 		   4,019    4,027    4,047    4,017

//	#define _STACK_SIZE	1048576		// 		   2,016    2,021    2,031    2,015

//	#define _STACK_SIZE	2097152		// 		   1,006    1,011    1,015    1,005

//	#define _STACK_SIZE	4194304		// 		     501      504      507      500

...

引文:

Sergey Kostrov 写道:

>>...If you could post return value of CreateThread function, but you will need to use debugger for this...

Debugger is Not needed to get an error code and a call to GetLastError Win32 function should provide you with exact reason why some thread was not created.

Overlooked that options.

I do not think that problem can be related to creation dozen of threads.

@Rajesh

if you would like to investigate your issue deeper there is one great tool or script which can dump hang process.It is called ADPlus.

引文:

iliyapolak 写道:

I do not think that problem can be related to creation dozen of threads.

@Rajesh

if you would like to investigate your issue deeper there is one great tool or script which can dump hang process.It is called ADPlus.

I will defnitely investigate this issue and post back here. Ill look over ADPlus

>>>I will defnitely investigate this issue and post back here. Ill look over ADPlus>>>

ADPlus works with windbg.

>>...No I am using Boost thread to create the threads. I believe it uses the Win32 API underneath to create the threads.
>>The log file I generated was custom made it just helped me diagnose where my program was hanging when
>>launched by the performance analyzer...
>>...
>>Yes I believe it has something to do with the number of threads created. I am not sure why it has an issue with that...

I understood that you've found a reason, right? If Yes, How many threads were successfully created before the application hang?

Hi Rajesh

do you have any updates?Did you try to use ADPlus?

登陆并发表评论。