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

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

如何調試 C 共享庫(用 Go 編寫)——它掛在網絡調用上

如何調試 C 共享庫(用 Go 編寫)——它掛在網絡調用上

Go
慕容3067478 2021-11-15 20:39:17
使用http.Post() 進行編碼。如果我構建exe,就可以了。如果我構建 C 共享庫-buildmode=c-shared,它會掛在 https.Post() 上。我試過strace -fp PID:futex(0x7f618b2c1cd0, FUTEX_WAKE, 1)    = 0futex(0xc820022110, FUTEX_WAIT, 0, NULL我試圖添加分析器:http.ListenAndServe("localhost:6060", nil)http.Post()但是它再次掛在 http.Post 上,并且分析器也被阻止了(它正在偵聽,但不是來自 6060 端口的響應)。我已經發送了 SIGQUIT 信號 - 堆棧跟蹤:SIGQUIT: quitPC=0x7f0cad5c9081 m=1goroutine 0 [idle]:runtime.futex(0xc820022110, 0x0, 0x0, 0x0, 0x7f0c00000000, 0x7f0cad577879, 0x0, 0x0, 0x7f0cad577ae8, 0xc820022110, ...)        /usr/local/go/src/runtime/sys_linux_amd64.s:288 +0x21runtime.futexsleep(0xc820022110, 0xc800000000, 0xffffffffffffffff)        /usr/local/go/src/runtime/os1_linux.go:39 +0x53runtime.notesleep(0xc820022110)        /usr/local/go/src/runtime/lock_futex.go:142 +0xa8runtime.stoplockedm()        /usr/local/go/src/runtime/proc1.go:1268 +0xb2runtime.schedule()        /usr/local/go/src/runtime/proc1.go:1590 +0x72runtime.park_m(0xc820000600)        /usr/local/go/src/runtime/proc1.go:1698 +0x191runtime.mcall(0x7f0cad5c722a)        /usr/local/go/src/runtime/asm_amd64.s:204 +0x53rax    0xcarbx    0x0rcx    0xffffffffffffffffrdx    0x0rdi    0xc820022110rsi    0x0rbp    0x1rsp    0x7ffe7bc801a8r8     0x0r9     0x0r10    0x0r11    0x286r12    0x4r13    0x7f0cada47090r14    0xdr15    0x8rip    0x7f0cad5c9081rflags 0x286cs     0x33fs     0x0gs     0x0如何調試/解決這個問題?代碼看起來不錯 - 標準的可執行二進制文件返回正確的值。只有 C 共享庫版本有一些問題。共享庫中的另一種方法,不使用 http.post()/net.Dial() 是可以的。原問題:https : //github.com/cavaliercoder/g2z/issues/5
查看完整描述

1 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

好的,我為我的用例解決了這個問題,您可能處于類似的情況。

當您將 Go 共享庫鏈接到 C 或 C++ 應用程序時,Go 運行時會在您啟動應用程序時加載(您可以驗證這一點,func init()例如,在您啟動應用程序時直接調用它)。然后,如果你 fork 一個進程并使用 Go 庫,你將有不可預測的行為?;旧?,你必須在 fork 之后加載 Go 共享庫,并且一旦你 fork 就不能依賴它。使用dlopendlsym將允許您控制 Go 運行時何時被加載。


查看完整回答
反對 回復 2021-11-15
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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