diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2020-02-18 15:33:15 -0800 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2020-02-20 12:53:00 +0000 |
commit | 86fae567fa38097d0075dc8c145c48b11a9182fc (patch) | |
tree | 3e9fe9f914a8738d9d243a43dfd85f1c04765682 /src/plugins/cpptools/cppmodelmanager.cpp | |
parent | 6f1ad0b0cbb2d8a3f7c487bfebdbb997bfc5c2bb (diff) | |
download | qt-creator-86fae567fa38097d0075dc8c145c48b11a9182fc.tar.gz |
TerminalControllingProcess: don't use qWarning in the child process
qWarning() and all of QMessageLogger will get to qFormatLogMessage(),
which locks a mutex. Additionally, qWarning may call a number of
different backends that, in turn, may have mutexes of their own. Locking
mutexes in child processes between fork() and execve() is a big no-no:
it may have been locked by another thread before fork(), so it's still
locked in the child process and will never get unlocked. Result:
deadlock.
Plus, qWarning reacts to QT_FATAL_WARNINGS, which I guess was not
intended for this class.
So just use a plain perror(), which is guaranteed by POSIX to be
"MT-Safe race:stderr".
Change-Id: I4e559af2a9a1455ab770fffd15f4a37a3fd113ca
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
0 files changed, 0 insertions, 0 deletions