diff options
| author | Thiago Macieira <thiago.macieira@intel.com> | 2023-05-25 18:17:23 -0700 |
|---|---|---|
| committer | Thiago Macieira <thiago.macieira@intel.com> | 2023-06-28 00:16:31 -0700 |
| commit | bd32c7d7055b436b8c33486a5b5ce1c29db77fd4 (patch) | |
| tree | 43e2c655c001668362f41bfc683ce8997fefb7e3 /src/widgets/doc/snippets | |
| parent | 27c4e4c4f58fbb1d01cd152b154d4ed21e2c5264 (diff) | |
QProcess/Unix: block all Unix signals between vfork() and exec()
This is similar to and extends the prevention of thread cancellation
introduced by commit ba05af82d3d8b7cbc6e22f93cbf1e3d1575afefe. This
prevents the situation in which a signal gets delivered (usually because
of a crash) and the parent process' handler is run, doing things it
shouldn't between vfork() and execve().
Most C libraries (all that I've investigated) unblock SIGABRT on
abort(), so this doesn't affect them. Likewise, on most OSes, crashes
ignore the signal block and terminate the application -- Darwin appears
to be an exception, but vfork() is not enabled there. Both situations
are tested by terminateInChildProcessModifier().
Task-number: QTBUG-113822
Change-Id: Ib5ce7a497e034ebabb2cfffd17628ca33969b7af
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/doc/snippets')
0 files changed, 0 insertions, 0 deletions
