summaryrefslogtreecommitdiffstats
path: root/src/shared-lib/crashhandler.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix long-standing race condition in the Unix signal handlerRobert Griebl8 days1-5/+8
| | | | | | | | | | | | | | | | | | | | | | The available signal handlers were stored in a list, but this is inherently not async-signal-safe. It was giving us the flexibility to have multiple signal handlers installed for a single signal, but in practice this is not a requirement at all and was never used. The new solution is to use a static array of SigHandler*, one handler per signal (ideally, we would store each std::function inside an atomic, but that is not possible). Removal of signal handlers is tricky even with atomics, because signal handlers block the current thread completely. This means we cannot delete a removed SigHandler instance immediately, but we can safely do so after a grace period (currently set to 10min). Also marked all libc and kernel functions with '::', as is the case in the rest of the AM source code. Change-Id: Ibd79fd489dc9d4db8edbf569f7ce29dee30c8d02 Pick-to: 6.11 Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
* Windows: adapt to the new DLL setupRobert Griebl8 days1-12/+57
| | | | | | | | | | | | | - Our structured-exception handler was effectively disabled by the CRT due to a changed call order for static constructors - RaiseException() to re-throw exceptions does not work across modules for some arcane reason, but calling the compiler-internal wrapper CxxThrowException still does. Change-Id: I2dbfe10e014fb41a030ca0ce9f81101e9aef99ec Pick-to: 6.11 Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
* Clang-tidy / ClazyRobert Griebl8 days1-3/+2
| | | | | | | | It's been a long time since the last round, so there are a lot of fixes Change-Id: Ic226130eed0d03776749a2a04806efaa537f3f19 Pick-to: 6.11 Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
* Re-organize the appman libraries into more manageable chunksRobert Griebl8 days1-0/+985
This is part 2 of this patch series. Part 1 was about converting the libs from static to shared. This patch now consolidates the library zoo into more manageable and logical chunks. Plus this will also help with keeping the hit to the startup performance (incurred by part 1) in check. The new setup closely follows the QML module nomenclature, but needs to account for the tool builds as well. The new libs are: - Common no changes - Package a combination of Package, Application and Crypto - Shared renamed from SharedMain and combined with Monitor and IntentClient - SystemUI renamed from Main and combined with Manager, DBus, IntentServer and Window - Application renamed from ApplicationMain Because the CrashHandler is using a "constructor" function, it had to be moved from the Common to the Shared lib to avoid having the custom crash handler also in the tools, as they need to install their own CTRL+C handler at times. In addition the 3 QML import modules are now built as official QML plugins and they are installed into $QTDIR/qml as any other import library. NB! There is a problem we still have to solve: custom appman binaries (system-ui's) are currently built by linking against Qt::AppManMain, but this no longer exists. It would be ideal if we could add an alias here. The other renamed modules are not that problematic, as they shouldn't be used outside of the appman project itself. If an alias is not possible, a dummy library which depends on the new "SystemUI" one should also do the trick. Change-Id: Id07e05a523c48e773c295c5be2f27804229155e0 Pick-to: 6.11 Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>