Bug report #12743
SegFault on adding composer map on a composition
Status: | Closed | ||
---|---|---|---|
Priority: | Normal | ||
Assignee: | - | ||
Category: | Map Composer/Printing | ||
Affected QGIS version: | master | Regression?: | No |
Operating System: | Debian 3.16.0-4-amd64 | Easy fix?: | No |
Pull Request or Patch supplied: | No | Resolution: | invalid |
Crashes QGIS or corrupts data: | No | Copied to github as #: | 20842 |
Description
I've a segfault on adding a QgsComposerMap to a QgsComposition
Code (last line):
template_document = QtXml.QDomDocument() template_document.setContent(QtCore.QFile(Printer.printing_template_file_path), False) composition = QgsComposition(QgsMapSettings()) composition.loadFromTemplate(template_document) composer_map = QgsComposerMap(composition, 0, 0, composition.paperWidth(), composition.paperHeight()) composer_map.setLayerSet(printable_layers) composer_map.setNewExtent(QgsMapLayerRegistry.instance().mapLayer(printable_layers[0]).extent()) composition.addComposerMap(composer_map)
Trace:
src/core/qgsscalecalculator.cpp: 42: (setMapUnits) [12948ms] Map units set to 2 src/core/symbology-ng/qgssymbollayerv2utils.cpp: 2606: (parseProperties) [503ms] unknown tag effect src/core/composer/qgscomposerlegend.cpp: 147: (adjustBoxSize) [66ms] width = 57.7 height = 19.1 src/providers/ogr/qgsogrprovider.cpp: 877: (extent) [1134ms] Starting get extent src/providers/ogr/qgsogrprovider.cpp: 915: (extent) [0ms] Finished get extent src/core/qgsvectorlayer.cpp: 846: (extent) [0ms] Extent of layer: 169886.5272530100774020,6235529.9054109705612063 : 175556.1440843147865962,6239247.8700000001117587 src/core/qgsscalecalculator.cpp: 42: (setMapUnits) [702ms] Map units set to 2 src/core/qgsscalecalculator.cpp: 131: (calculateGeographicDistance) [0ms] Distance across map extent (m): 4.28394e+08 src/core/qgsscalecalculator.cpp: 88: (calculate) [0ms] scale = 5.45161e+09 conversionFactor = 39.3701 src/core/qgsmapsettings.cpp: 186: (updateDerived) [0ms] Map units per pixel (x,y) : 19.08961896062191599, 19.16476592283273561 src/core/qgsmapsettings.cpp: 187: (updateDerived) [0ms] Pixmap dimensions (x,y) : 297, 194 src/core/qgsmapsettings.cpp: 188: (updateDerived) [0ms] Extent dimensions (x,y) : 5669.61683130470919423, 3717.96458902955055237 src/core/qgsmapsettings.cpp: 189: (updateDerived) [0ms] 169886.5272530100774020,6235529.9054109705612063 : 175556.1440843147865962,6239247.8700000001117587 src/core/qgsmapsettings.cpp: 190: (updateDerived) [0ms] Adjusted map units per pixel (x,y) : 19.16476592283273916, 19.16476592283273561 src/core/qgsmapsettings.cpp: 191: (updateDerived) [0ms] Recalced pixmap dimensions (x,y) : 297.00000000000005684, 194 src/core/qgsmapsettings.cpp: 192: (updateDerived) [0ms] Scale (assuming meters as map units) = 1:5451608664.28005218505859375 src/core/qgsmapsettings.cpp: 193: (updateDerived) [0ms] Rotation: 0 degrees src/core/qgsscalecalculator.cpp: 131: (calculateGeographicDistance) [0ms] Distance across map extent (m): 4.28394e+08 src/core/qgsscalecalculator.cpp: 88: (calculate) [0ms] scale = 1.41969e+09 conversionFactor = 39.3701 src/core/qgsmapsettings.cpp: 186: (updateDerived) [1ms] Map units per pixel (x,y) : 19.08961896062191599, 19.16476592283273561 src/core/qgsmapsettings.cpp: 187: (updateDerived) [0ms] Pixmap dimensions (x,y) : 297, 194 src/core/qgsmapsettings.cpp: 188: (updateDerived) [0ms] Extent dimensions (x,y) : 5669.61683130470919423, 3717.96458902955055237 src/core/qgsmapsettings.cpp: 189: (updateDerived) [0ms] 169886.5272530100774020,6235529.9054109705612063 : 175556.1440843147865962,6239247.8700000001117587 src/core/qgsmapsettings.cpp: 190: (updateDerived) [0ms] Adjusted map units per pixel (x,y) : 19.16476592283273916, 19.16476592283273561 src/core/qgsmapsettings.cpp: 191: (updateDerived) [0ms] Recalced pixmap dimensions (x,y) : 297.00000000000005684, 194 src/core/qgsmapsettings.cpp: 192: (updateDerived) [0ms] Scale (assuming meters as map units) = 1:1419689756.32293009757995605 src/core/qgsmapsettings.cpp: 193: (updateDerived) [0ms] Rotation: 0 degrees src/core/qgsscalecalculator.cpp: 42: (setMapUnits) [0ms] Map units set to 0 src/core/qgsscalecalculator.cpp: 88: (calculate) [0ms] scale = 18863 conversionFactor = 39.3701 src/core/qgsmapsettings.cpp: 186: (updateDerived) [0ms] Map units per pixel (x,y) : 19.08961896062191599, 19.16476592283273561 src/core/qgsmapsettings.cpp: 187: (updateDerived) [0ms] Pixmap dimensions (x,y) : 297, 194 src/core/qgsmapsettings.cpp: 188: (updateDerived) [0ms] Extent dimensions (x,y) : 5669.61683130470919423, 3717.96458902955055237 src/core/qgsmapsettings.cpp: 189: (updateDerived) [1ms] 169886.5272530100774020,6235529.9054109705612063 : 175556.1440843147865962,6239247.8700000001117587 src/core/qgsmapsettings.cpp: 190: (updateDerived) [0ms] Adjusted map units per pixel (x,y) : 19.16476592283273916, 19.16476592283273561 src/core/qgsmapsettings.cpp: 191: (updateDerived) [0ms] Recalced pixmap dimensions (x,y) : 297.00000000000005684, 194 src/core/qgsmapsettings.cpp: 192: (updateDerived) [0ms] Scale (assuming meters as map units) = 1:18862.95856622507562861 src/core/qgsmapsettings.cpp: 193: (updateDerived) [0ms] Rotation: 0 degrees Erreur de segmentation
Version de QGIS 2.9.0-Master
Révision du code 06180fe
Compilé avec Qt 4.8.6
Utilisant Qt 4.8.6
Compilé avec GDAL/OGR 1.10.1
Utilisé avec GDAL/OGR 1.10.1
Compilé avec GEOS 3.4.2-CAPI-1.8.2
Utilisé avec GEOS 3.4.2-CAPI-1.8.2 r3921
Version du client PostgreSQL 9.4.1
Version de SpatiaLite 4.1.1
Version de QWT 6.0.0-svn
Version de PROJ.4 : 480
Version de QScintilla2 2.8.4
Cette copie de QGIS dispose d'une sortie de débogage.
History
#1 Updated by Nyall Dawson over 9 years ago
- Resolution set to invalid
- Status changed from Open to Closed
This line:
composition = QgsComposition(QgsMapSettings())
Creates a temporary QgsMapSettings which immediately goes out of scope and is deleted.
You need to keep a reference to it for as long as the composition exists:
ms=QgsMapSettings() composition = QgsComposition(ms)
That will fix the crash.
#2 Updated by Evan GAROT--ADRIAN over 9 years ago
- % Done changed from 0 to 100
Hi Nyall.
Im really sorry because i found this solution, i test it and that don't work the first time. That's why i open this issue here. But i retest it just now to be sure and it works. Maybe i needed to get out of my problem and my rude journey...
Really thanks for your fast answer.
I hope this post will not be useless and help someone later.
Best regards.
Axiiom