Bug report #15558

qt5: delimited text provider triggers QSocketNotifier error

Added by Mathieu Pellerin - nIRV about 3 years ago. Updated about 3 years ago.

Status:Closed
Priority:Severe/Regression
Assignee:-
Category:Data Provider/Delimited Text
Affected QGIS version:master Regression?:No
Operating System: Easy fix?:No
Pull Request or Patch supplied:No Resolution:
Crashes QGIS or corrupts data:Yes Copied to github as #:23481

Description

The delimited text provider, when QGIS is built against qt5, throws the following error every time it is rendered onto the canvas: "QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread". It appears to be linked to at least one crasher (see discussion here: https://github.com/qgis/QGIS/pull/3473)

Steps to reproduce
  1. Build QGIS against Qt5
  2. Create a new project,
  3. Open the console, and switch to the Qt tab (if it's not there yet, it'll appear when the above mentioned error is printed)
  4. Add a delimited text provider layer
  5. Look at the console log, you should see the QSocketNotifier error

Associated revisions

Revision b3e31087
Added by Mathieu Pellerin - nIRV about 3 years ago

[delimitertext] fix watcher check ignored and harmful watcher created for iterator
(fixes #15558)

Revision 92ed3bef
Added by Chris Crook about 3 years ago

Merge pull request #3483 from nirvn/fix_delimited_text_file

[delimitertext] fix watcher check ignored and harmful watcher created for iterator (fixes #15558)

@nirvn Many thanks for fixing this

Revision 3dbf97f0
Added by Mathieu Pellerin - nIRV about 3 years ago

[delimitertext] fix watcher check ignored and harmful watcher created for iterator
(fixes #15558)

(cherry-picked from b3e31087181732f7511d047b98352e97f08b0d04)

Revision e4ec4e34
Added by Mathieu Pellerin - nIRV about 3 years ago

[delimitertext] fix watcher check ignored and harmful watcher created for iterator
(fixes #15558)

(cherry-picked from b3e31087181732f7511d047b98352e97f08b0d04)

Revision d5bfc82f
Added by Mathieu Pellerin - nIRV about 3 years ago

[delimitertext] fix watcher check ignored and harmful watcher created for iterator
(fixes #15558)

(cherry-picked from b3e31087181732f7511d047b98352e97f08b0d04)

History

#1 Updated by Mathieu Pellerin - nIRV about 3 years ago

Looking at the terminal output, the socket notifier error (appears to be/is) printed after QgsMapRendererJob::cleanupJobs is called.

/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/qgis/plugins/libdelimitedtextprovider.so(+0x1f64f)[0x7fdc5fdd064f]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/qgis/plugins/libdelimitedtextprovider.so(+0x1f4a0)[0x7fdc5fdd04a0]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/qgis/plugins/libdelimitedtextprovider.so(+0x1f572)[0x7fdc5fdd0572]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/qgis/plugins/libdelimitedtextprovider.so(+0x11a59)[0x7fdc5fdc2a59]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/qgis/plugins/libdelimitedtextprovider.so(+0x11aea)[0x7fdc5fdc2aea]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/libqgis_core.so.2.99.0(+0x636a24)[0x7fdcfc63ba24]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/libqgis_core.so.2.99.0(+0x636ac0)[0x7fdcfc63bac0]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/libqgis_core.so.2.99.0(+0x64b2fa)[0x7fdcfc6502fa]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/libqgis_core.so.2.99.0(+0x64b352)[0x7fdcfc650352]
/home/webmaster/dev/cpp/QGIS/bm-qt5-master/output/lib/libqgis_core.so.2.99.0(QgsMapRendererJob::cleanupJobs(QList<LayerRenderJob>&)+0x343)[0x7fdcfc4e3879]
src/core/qgsmessagelog.cpp: 45: (logMessage) [9ms] 2016-09-13T09:03:46 Qt[1] QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
src/core/qgsmaprendererparalleljob.cpp: 188: (renderLayersFinished) [4ms] PARALLEL layers finished
src/core/qgsmaprenderercustompainterjob.cpp: 279: (drawLabeling) [0ms] [thread:0x7fdc38001620] Draw labeling start
src/core/qgsmaprenderercustompainterjob.cpp: 300: (drawLabeling) [1ms] [thread:0x7fdc38001620] Draw labeling took (seconds): 0
src/core/qgsmaprendererparalleljob.cpp: 209: (renderingFinished) [4ms] PARALLEL finished
src/gui/qgsmapcanvas.cpp: 621: (rendererJobFinished) [0ms] CANVAS finish! 1

#2 Updated by Mathieu Pellerin - nIRV about 3 years ago

Narrowed the QSocketNotifier error to qgsdelimitertextfile's line 83 (https://github.com/qgis/QGIS/blob/master/src/providers/delimitedtext/qgsdelimitedtextfile.cpp#L83), where the QFileSystemWatcher *mWatcher variable is deleted when the renderer is deleted in QgsMapRendererJob::cleanupJobs().

#3 Updated by Chris Crook about 3 years ago

  • Status changed from Open to Closed

Also available in: Atom PDF