Git Product home page Git Product logo

Comments (4)

jrfonseca avatar jrfonseca commented on July 26, 2024

RaiseFailFastException specifically skips any exception handlers. So I see the following options (from simplest to hardest):

  1. 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.
  2. 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.)
  3. 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.

alvinhochun avatar alvinhochun commented on July 26, 2024

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.

jrfonseca avatar jrfonseca commented on July 26, 2024

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.

jrfonseca avatar jrfonseca commented on July 26, 2024

No further action planned from DrMinGW side, so closing.

from drmingw.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.