Freeze detection 64bit
Freeze detection 64bit
I have noticed multiple times that the freeze detection (including MadTraceProcess) will sometimes not show the main thread for 64bit builds.
The callstacks of all other threads are shown (I think), but the main thread (the one that is actually frozen) is not contained. Is this maybe a known issue?
The callstacks of all other threads are shown (I think), but the main thread (the one that is actually frozen) is not contained. Is this maybe a known issue?
- Attachments
-
- freeze.jpg (13.29 KiB) Viewed 17824 times
Re: Freeze detection 64bit
Not that I'm aware of. Are you sure the main thread still "exists"? It could be crashed and then gone, which would also explain the detected freeze. Windows doesn't stop a process just because the main thread is done. Actually, Windows doesn't even know the concept of a "main" thread. There are just a bunch of threads. And as long as any thread is still running, and nobody calls ExitProcess(), the process lives on.
P.S: Of course if the main thread actually crashes, madExcept should have reported that, though. So maybe not that likely a scenario? I'm not sure...
P.S: Of course if the main thread actually crashes, madExcept should have reported that, though. So maybe not that likely a scenario? I'm not sure...
Re: Freeze detection 64bit
For what it's worth, I have seen this, too. I have a user who uploaded 5 bug reports with no main thread and they were all freeze detection. What's more, she was able to continue using the application without any problems -- except that when the freeze detection interval elapsed, she would get another prompt to upload a bug report.
Re: Freeze detection 64bit
That sounds so weird! I assume it's a VCL (GUI) application? So even though freeze detection complained and the bug reports contained no main thread, all the VCL forms still continued to work fine?
Re: Freeze detection 64bit
I'm very sorry for replying so late! I totally forgot to keep looking into the forum and haven't thought about it until now.
It is a VCL / GUI application, correct. I don't think the main thread has actually crashed, the UI still continues to work. To make it even more weird, If I retry to retrieve a report for a frozen application using MadTraceProcess a few times, then eventually it will be able to list the main thread as well. Just not the first few times.
I did a quick test again just now using the 64bit version of our software TreeSize + MadTraceProcess. Even when the main thread is not actually frozen, the report sometimes does not contain the main thread. You might have to try a few times until its reproducible, but after ~5-7 retries, I recieved a report without main thread.
It is a VCL / GUI application, correct. I don't think the main thread has actually crashed, the UI still continues to work. To make it even more weird, If I retry to retrieve a report for a frozen application using MadTraceProcess a few times, then eventually it will be able to list the main thread as well. Just not the first few times.
I did a quick test again just now using the 64bit version of our software TreeSize + MadTraceProcess. Even when the main thread is not actually frozen, the report sometimes does not contain the main thread. You might have to try a few times until its reproducible, but after ~5-7 retries, I recieved a report without main thread.
Re: Freeze detection 64bit
Can you reproduce the problem in a simple new (almost empty) test project? If so, can you send that test project to me?
Re: Freeze detection 64bit
Unfortunately not. I tried creating a sample project and applied all kinds of settings and parameters, but was not able to reproduce it there, sorry
Re: Freeze detection 64bit
Too bad, not sure how to fix the problem without being able to reproduce it...
Re: Freeze detection 64bit
I finally managed to reproduce it. I was thinking that maybe the ribbon framework has to do with it, so I added a ribbon menu to the sample application. It still takes quite a few retries until it occurs, but as a repro, I did the following:
- Compile and start the application
- Make sure that the application stays in the foreground, so that the OnUpdate code of the action keeps getting triggered (I think that might have to do with it).
- Run MadTraceProcess64 and select the process Project1.exe
- Check trace report. Retry a few times if necessary (Max ~10 times did it for me. I know that's not ideal, but maybe you can work with this anyway)
Note: You can check "callstack crc" in the first tab to see at first glance if it occured. It will show "$00000000" in that case:
callstack crc : $00000000, $00000000, $d88e605a
- Compile and start the application
- Make sure that the application stays in the foreground, so that the OnUpdate code of the action keeps getting triggered (I think that might have to do with it).
- Run MadTraceProcess64 and select the process Project1.exe
- Check trace report. Retry a few times if necessary (Max ~10 times did it for me. I know that's not ideal, but maybe you can work with this anyway)
Note: You can check "callstack crc" in the first tab to see at first glance if it occured. It will show "$00000000" in that case:
callstack crc : $00000000, $00000000, $d88e605a
Re: Freeze detection 64bit
I can't get the upload to work..
Could you maybe download from our fileshare and attach the file?
https://fileshare.jam-software.de/share ... cedownload
Could you maybe download from our fileshare and attach the file?
https://fileshare.jam-software.de/share ... cedownload
Re: Freeze detection 64bit
The issue is still present, unfortunately. Any chance you can have another look at this? I still have the sample project that I could send you.