I am using VTune Amplifier XE 2013 to find performance bottlenecks in the software our company develops.
Recently I encountered a crash of our own software during a VTune basic hotspots analysis. (The crash does not appear without having VTune attached.) I get a Windows dialog telling me that the software is not working anymore, giving the problem signature "BEX64".
I have conducted a few tests and found:
- The problem also appears when I disable my virus scanner. There is no 3rd party firewall installed (only the Windows-internal one).
- The problem also appears when I use only 1 display.
- I have tried VTune 2013 Update 12 and Update 14; the problem occurs in both.
- There is no crash when I use the "advanced hotspots analysis". However, this is no option for me, because I get no backtraces and therefore no hierarchical view in the top-down analysis when I use the advanced method.
- Windows 7 enterprise 64 bit, SP1
- Dell Workstation T7500: Xeon X5650@2.66 GHz, 24 GB RAM
Can anyone help?
I just found out that when I use software rendering in my application (normally I use hardware rendering with OpenGL) the crashes do not appear.
If I find out which OpenGL feature causes the crash, I will post it here.
I hadn't found the VTune forum at the first glance. If I am able to move the post there, can you tell me how?
Regarding the dump file: Our application has registered a callback so that we write out the minidumps inside a crash handler of our application. (Thus Windows does not create a minidump.) The minidump created by our application is empty (I guess the one Windows would have created would be empty, too), so it makes so sense posting it. Normally these minidumps are really full of information, but with this specific crash it's not. :-( We have had others OpenGL-related crashes before which resulted in no backtraces / empty minidumps.
Regarding the idea of moving your post to VTune forum , simply create new thread in that forum.
Can you enable the handling of minidump file creation?I mean remove the callback and let the Windows mechanism try to create a dump file?
Thanx for moving the thread!
I have tried to remove our crash handler callback and let Windows handle the exception. Result: even in this setting, no minidump was created by Windows.
interesting, it seems as if with VTune command line mode my app does not crash (at least not as often as before - i.e. for now, I couldn't reproduce the crash in cmd line mode).
This could be an interesting workaround for me, but to better filter out the time slot which I really want to measure (and to not waste memory measuring application load time and test preparation) I would like to have VTune attached to a running process... it this also possible in command line mode?
Strange issue.Could that be a failed DLL injection or the other means of reading your process memory?
Regarding no minidump issue.You can set a windbg to be a default post mortem debugger.
@MrAnderson: Thanks for the hint. I have simply overlooked the radio buttons which enable me to collect stacks and even call counts. (Btw: I would suggest to enable "Hotspots, stacks and context switches" or even the call counts option by default instead of setting "Hotspots only" as default. Reason: with "Hotspots only", the advanced analysis is even less advanced than the basic analysis.) But most interesting for me: in the advanced mode incl. stack traces, my software does not crash, while it does crash in basic mode. Are internal VTune code paths different between basic analysis and "advanced analysis with stack trace"?
@Iliyapolak: I don't clearly understand. How do I check if there is something wrong with DLL injection or reading process memory? How do I "set a windbg"?
However, in the whole I can say at this moment that I'm happy, because I can simply use the advanced analysis now to prevent those crashes.
Sorry for providing confusing information.Disregard that sentence which is related to dll injection.
You can set windbg for postmortem debugging by using command line switch.Simply navigate to your windbg folder and issue this command:
@iliyapolak: The thing is that the only information I get (which Windows tells me) is that "the application does not work anymore". So I cannot figure out what is really happening or if it's an access violation or sth else.
Can you search for minidump files on your machine?You can look in Windows directory or in Windows\System32 directory.
Btw. I fear that you disabled or interferd with a minidump generation mechanism.
that has been discussed more above in this thread: Yes, our application catches those exception and handles minidump generation by itself. I have as a test disabled this mechanism to let Windows generate the minidumps. The result was that there was no minidump created by Windows. We have experienced such strange behaviour before when dealing with NVidia driver crashes. It sounds bad to have no dump at all, but it seems as if this really can happen...