簡體   English   中英

從 Python 中的函數返回 OGR 層對象的分段錯誤

[英]Segmentation fault returning OGR Layer object from function in Python

我有一個簡單的程序來處理來自 Geopackage 層的點。 在第一次嘗試時,我將文件訪問封裝到一個函數中:

from osgeo import ogr

pointsFile = "points.gpkg"

def getPoints():

    driver = ogr.GetDriverByName("GPKG")
    dataSource = driver.Open(pointsFile, 0)
    layer = dataSource.GetLayer(0)
    print("Returning layer")
    return layer

def main():

    layer = getPoints()
    print("Number of points to process: ", layer.GetFeatureCount())


if __name__ == '__main__': main()

當它返回圖層對象時,它會因分段錯誤而失敗:

$ python3 testReturn.py
Returning layer
Segmentation fault (core dumped)

但是,在main訪問文件:

from osgeo import ogr

pointsFile = "points.gpkg"

def main():

    driver = ogr.GetDriverByName("GPKG")
    dataSource = driver.Open(pointsFile, 0)
    layer = dataSource.GetLayer(0)
    print("Number of points to process: ", layer.GetFeatureCount())


if __name__ == '__main__': main()

程序按預期運行:

$ python3 testDirect.py
Number of points to process:  21872

什么可能導致這個問題?

GDB測試代碼,調用時出現分段錯誤:

layer.GetFeatureCount()

一些額外的調試信息:

啟動程序:/usr/bin/python3 testReturn.py

[啟用使用 libthread_db 的線程調試]

使用主機 libthread_db 庫“/lib/x86_64-linux-gnu/libthread_db.so.1”。

返回層程序收到信號SIGSEGV,分段錯誤。 來自 /usr/local/lib/libgdal.so.20 (gdb) 的 OGR_L_GetFeatureCount () 中的 0x00007ffff5c42298

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM