Comments (4)
RaiseFailFastException
specifically skips any exception handlers. So I see the following options (from simplest to hardest):
- The ideal would be for Qt to provide a callback from
qt_message_fatal
, where one could just raise a normal exception which would be trapped by ExcHndl. - Catch exception out of process, through the debugging API. That is, use DrMinGW's catchsegv instead of ExcHndl. There might be some performance impact, particularly initialization (when loading all DLLs.) Give it a try running Krita inside (
catchsegv -m krita ...
) -- if performance is acceptable, then you could have setup krita to always be run inside catchsegv (via the shortcuts, or through a launcher.) - Use Detours inside ExcHndl to intercept
RaiseFailFastException
and report the exception. In one way, this is less disruptive, but potentially more brittle, as these code patching mechanisms are the same used by malware, hence are constantly getting constrained.
I hope this helps.
from drmingw.
Thanks for the suggestions. Given these options I think I will patch Qt's behaviour for now and consider moving to a catchsegv-like approach in the future. I've always wanted to implement a better UI on crash, so maybe I will try to make a fancier GUI version of it (not now though 😆 ). I tried catchsegv on Krita and didn't see any slowdown on initialization... but frankly Krita on Windows already starts up way slower than on Linux (10 seconds vs 3 seconds).
Side note: When I tested with catchsegv, it didn't seem to be able to produce line number info (exchndl outputs them fine). I have split debug file linked with gnu-debuglink, maybe that is broken with catchsegv?
from drmingw.
When I tested with catchsegv, it didn't seem to be able to produce line number info (exchndl outputs them fine). I have split debug file linked with gnu-debuglink, maybe that is broken with catchsegv?
It should work.
from drmingw.
No further action planned from DrMinGW side, so closing.
from drmingw.
Related Issues (20)
- Faulting location incorrect if executable uses ASLR. HOT 3
- Have it handle stack corruption HOT 3
- No source code is showing for projects built with MSYS2 HOT 4
- Reason for erroring out with posix threads? HOT 2
- catchsegv not resolving gnu_debuglink correctly HOT 8
- catchsegv clobbers Unicode arguments
- Feature request: Support ARM64 HOT 23
- Feature request: Allow opt-in to use system provided zlib HOT 1
- ExcHndl.dll can't print the crash call stack under Windows 7 HOT 20
- Dumping register values on x86_64 HOT 1
- Write minidump from exchndl.dll
- Support minidump locations/filenames containing unicode (wide char) characters HOT 4
- Release 0.9.8: Naming of link libraries different between 32 and 64 bit HOT 3
- What is the minimal OS to run the official drmingw release? HOT 2
- libwinpthread-1.dll missing from release HOT 9
- Save the result automatically HOT 3
- Is it possible to update drmingw to the latest version in the msys2 package? HOT 2
- better sample code in the home page HOT 1
- exchndl problem HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from drmingw.