Bug report #20558
QGIS crashes when printing to console in separate thread
Status: | Closed | ||
---|---|---|---|
Priority: | High | ||
Assignee: | - | ||
Category: | Python bindings / sipify | ||
Affected QGIS version: | 3.4.1 | Regression?: | No |
Operating System: | Windows 10 | Easy fix?: | No |
Pull Request or Patch supplied: | No | Resolution: | wontfix |
Crashes QGIS or corrupts data: | Yes | Copied to github as #: | 28378 |
Description
If you run the following in the python console from QGIS 3.x in Windows 10, QGIS will crash every time. I believe this is a regression that began with 3.0, but I no longer have a 2.x version to compare with.
class PrintThread (QThread):
completed = pyqtSignal()
def init(self ):
QThread.__init__(self)
def run (self):
print("a message!")
t = PrintThread()
t.start()
History
#1 Updated by Giovanni Manghi almost 6 years ago
- Category changed from Python plugins to Python bindings / sipify
#2 Updated by Alessandro Pasotti almost 6 years ago
I think this is a won't fix: python printing from a thread will crash for sure.
You should use QgsMessageLog or other means to communicate with the user.
#3 Updated by Nyall Dawson almost 6 years ago
- Regression? changed from Yes to No
It's not a regression - this has always been the case.
#4 Updated by Juan Manuel Perez almost 6 years ago
Just tried the above code on QGis 2.18.20, and in 2.18 this piece of code didn't cause QGis to crash.
I stumbled on this issue while migrating a processing pluging from Qgis 2.18 to Qgis 3.4. Its processing algorithm included some 'print' statements, and I've been forced to remove them for Qgis3 (in Qgis2 they didn't cause any problems).
#5 Updated by Alessandro Pasotti almost 6 years ago
- Resolution set to wontfix
- Status changed from Open to Closed
The solution is simple: do not use "print" in a python script in QGIS.