亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Reflect Value.Interface() panic: v1.15.4 之后 CGo

Reflect Value.Interface() panic: v1.15.4 之后 CGo

Go
富國滬深 2022-08-24 15:46:05
我正在使用一個名為GEOS的C庫,它提供了一個C支持的實現來處理幾何操作。在某些反射操作期間使用了包含此 C 類型的結構,但在升級到 Go v1.15.4(或之后的任何版本)時,這會導致死機。我已經隔離了這個問題,并且似乎當使用反射來創建新的反射時,后續調用的結果在:TypeValueInterface()panic: bad indirvar test *C.GEOSGeometryreflectType := reflect.ValueOf(test).Type().Elem()value := reflect.New(reflectType)// Panics in 1.15.4+value.Interface()實際的恐慌來自內部,發生以下情況:func packEfacereflect/value.goswitch {    case ifaceIndir(t):        if v.flag&flagIndir == 0 {   // here v.flag = 22 and flagIndir = 128            panic("bad indir")        }        ...看起來我在這里做的事情是不正確的,還是更有可能這是一個錯誤引入的?1.15.4
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

我向 Golang GitHub 報告了此問題

經過進一步調查,在C代碼中,被定義為不完整的結構類型:GEOSGeometry

typedef struct GEOSGeom_t GEOSGeometry;

開發人員創建了一個補丁,使得它在更好的地方失敗,而不是在調用時隨機恐慌Interface()


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號