sbinet / go-python

naive go bindings to the CPython2 C-API
Other
1.52k stars 138 forks source link

go panic when multi thread #97

Closed marsccm closed 4 years ago

marsccm commented 4 years ago

Hi. My go code: { go do_1_second_python_cal() go do_1_second_python_cal() go do_1_second_python_cal() go do_1_second_python_cal() go do_1_second_python_cal() } It is panic stable. ` Fatal Python error: ceval: orphan tstate Fatal Python error: GC object already tracked SIGABRT: abort PC=0x7fff6fe3a2c6 m=0 sigcode=0

goroutine 0 [idle]: runtime: unknown pc 0x7fff6fe3a2c6 stack: frame={sp:0x7ffeefbfe928, fp:0x0} stack=[0x7ffeefb80740,0x7ffeefbff7b0) 00007ffeefbfe828: 0000000000000000 0000000000000000 00007ffeefbfe838: 0000000000000000 0000000000000000 00007ffeefbfe848: 0000000000000000 0000000000000000 00007ffeefbfe858: 0000000000000000 0000000000000000 00007ffeefbfe868: 0000000000000000 0000000000000000 00007ffeefbfe878: 0000000000000000 00007ffeefbfe8b0 00007ffeefbfe888: 00007fff6fd8be2d 00007fffa2cf99a0 00007ffeefbfe898: 000000000a2c9545 000000000a2c951c 00007ffeefbfe8a8: 0000000006c3d6e0 00007ffeefbfe990 00007ffeefbfe8b8: 00007fff6fd84bc5 00007ffeefbfe8f0 00007ffeefbfe8c8: 00007fff6fd8aed0 000000000735c400 00007ffeefbfe8d8: 0000000000000000 00007fffa2cf91a8 00007ffeefbfe8e8: 0000000000000006 00007ffeefbfe920 00007ffeefbfe8f8: 00007fff6fd83c0e 00007fffa2cf9240 00007ffeefbfe908: 00007fffa2cf8ca0 00007fff6fd83bb8 00007ffeefbfe918: 0000000000000000 00007ffeefbfe960 00007ffeefbfe928: <00007fff6feefbf1 0000000013dc15c0 00007ffeefbfe938: 00007ffeefbfe978 000000000a2c9545 00007ffeefbfe948: 000000000a2c951c 000000000a2c951c 00007ffeefbfe958: 0000000006c3d6e0 00007ffeefbfe990 00007ffeefbfe968: 00007fff6fda46a6 00000000000120a8 00007ffeefbfe978: 00007fffffffffdf ffffffffefbfe9b0 00007ffeefbfe988: 00007fffa2cf99a0 00007ffeefbfe9b0 00007ffeefbfe998: 0000000006623f91 0000000006c32fd0 00007ffeefbfe9a8: 0000000006c382c0 00007ffeefbfeb40 00007ffeefbfe9b8: 00000000065f6b36 0000000000000000 00007ffeefbfe9c8: 0000000000000001 000000000000003a 00007ffeefbfe9d8: 0000000006b747ae 0000000000000000 00007ffeefbfe9e8: 00007ffeefbff478 00007ffeefbfea90 00007ffeefbfe9f8: 000000000688d827 00007ffeefbfea70 00007ffeefbfea08: 000000000693bf70 0000000006c3d6d8 00007ffeefbfea18: 000000000a2c951c 000000000a3c36b0 runtime: unknown pc 0x7fff6fe3a2c6 stack: frame={sp:0x7ffeefbfe928, fp:0x0} stack=[0x7ffeefb80740,0x7ffeefbff7b0) 00007ffeefbfe828: 0000000000000000 0000000000000000 00007ffeefbfe838: 0000000000000000 0000000000000000 00007ffeefbfe848: 0000000000000000 0000000000000000 00007ffeefbfe858: 0000000000000000 0000000000000000 00007ffeefbfe868: 0000000000000000 0000000000000000 00007ffeefbfe878: 0000000000000000 00007ffeefbfe8b0 00007ffeefbfe888: 00007fff6fd8be2d 00007fffa2cf99a0 00007ffeefbfe898: 000000000a2c9545 000000000a2c951c 00007ffeefbfe8a8: 0000000006c3d6e0 00007ffeefbfe990 00007ffeefbfe8b8: 00007fff6fd84bc5 00007ffeefbfe8f0 00007ffeefbfe8c8: 00007fff6fd8aed0 000000000735c400 00007ffeefbfe8d8: 0000000000000000 00007fffa2cf91a8 00007ffeefbfe8e8: 0000000000000006 00007ffeefbfe920 00007ffeefbfe8f8: 00007fff6fd83c0e 00007fffa2cf9240 00007ffeefbfe908: 00007fffa2cf8ca0 00007fff6fd83bb8 00007ffeefbfe918: 0000000000000000 00007ffeefbfe960 00007ffeefbfe928: <00007fff6feefbf1 0000000013dc15c0 00007ffeefbfe938: 00007ffeefbfe978 000000000a2c9545 00007ffeefbfe948: 000000000a2c951c 000000000a2c951c 00007ffeefbfe958: 0000000006c3d6e0 00007ffeefbfe990 00007ffeefbfe968: 00007fff6fda46a6 00000000000120a8 00007ffeefbfe978: 00007fffffffffdf ffffffffefbfe9b0 00007ffeefbfe988: 00007fffa2cf99a0 00007ffeefbfe9b0 00007ffeefbfe998: 0000000006623f91 0000000006c32fd0 00007ffeefbfe9a8: 0000000006c382c0 00007ffeefbfeb40 00007ffeefbfe9b8: 00000000065f6b36 0000000000000000 00007ffeefbfe9c8: 0000000000000001 000000000000003a 00007ffeefbfe9d8: 0000000006b747ae 0000000000000000 00007ffeefbfe9e8: 00007ffeefbff478 00007ffeefbfea90 00007ffeefbfe9f8: 000000000688d827 00007ffeefbfea70 00007ffeefbfea08: 000000000693bf70 0000000006c3d6d8 00007ffeefbfea18: 000000000a2c951c 000000000a3c36b0

`

Can you help me? Thank you very much.

marsccm commented 4 years ago

I find it. { go python.PyImport_ImportModule("doc")

go python.PyImport_ImportModule("search")

}

It is panic if python.PyImport_ImportModule same time.