Bug report #9973
Multi-Thread-Rendering: Qt Concurrent has caught an exception thrown from a worker thread
|Affected QGIS version:||master||Regression?:||No|
|Operating System:||Easy fix?:||No|
|Pull Request or Patch supplied:||No||Resolution:||fixed/implemented|
|Crashes QGIS or corrupts data:||Yes||Copied to github as #:||18468|
If one error (e.g. GEOSException) is throwed within of 'QgsMapRendererCustomPainterJob::doRender()' function, it is uncaught and stops fully the current rendering task.
I get this message:
"Qt Concurrent has caught an exception thrown from a worker thread"
"This is not supported, exceptions thrown in worker threads must be caught before control returns to Qt Concurrent"
The example of #9861 can be used (it contains invalid geometries).
The project configures an offset to the geometries to draw. Because of them are invalid 'GEOSOffsetCurve' throws one uncaught GEOSException.
I'm implementing ST_MakeValid function in QgsGeometry to solve this issue and then convert to valid the self-crossing geometries, but I can not catch GEOSException exceptions.