У меня есть простой CGO код, который выполняет проверку пользователя. Этот модуль компилируется в файл pam c .so при сборке go. Этот pam c .so динамически загружается моим приложением во время запуска и выгружается при его остановке. Процесс подачи заявки написан в "C". Мое веб-приложение запускается в контейнере docker.
Когда я тестировал свое веб-приложение, модуль CGO (pam c .so) прекрасно работает во всех случаях, кроме случаев, когда контейнер остановлен / убит. В этих ситуациях мое приложение веб-интерфейса заканчивается исключением, которое, по-видимому, вызвано go -runtime из-за исключения в нем.
go версия go1.10.2 linux/amd64
Компиляция моего CGO: go build -buildmode=c-shared -o pamc.so. pamc.go
Любая идея, если это ошибка в CGO -runtime? если нет, есть идеи, как решить эту ошибку, пожалуйста?
Вот подробности об исключении в CGO -runtime (подробности GDB):
(gdb) where #0 0x00007f583d9478df in raise () from /lib64/libc.so.6
#1 0x00007f583d931cf5 in abort () from /lib64/libc.so.6
#2 0x00007f583f5b1dad in myExceptionHandler () from /opt/authenitcate/lib64/libauth_r.so
#3 0x00007f583565477d in runtime.sigfwd () at /usr/lib/golang/src/runtime/sys_linux_amd64.s:337
#4 0x000000c00006b3a8 in ?? ()
#5 0x00007f583563bd8b in runtime.sigfwdgo (sig=11, info=0xc00006b5f0, ctx=0xc00006b4c0, ~r3=<optimized out>) at /usr/lib/golang/src/runtime/signal_unix.go:660
#6 0x00007f583563af00 in runtime.sigtrampgo (sig=<optimized out>, info=0xc00006b5f0, ctx=0xc00006b4c0) at /usr/lib/golang/src/runtime/signal_unix.go:289
#7 0x00007f58356547d3 in runtime.sigtramp () at /usr/lib/golang/src/runtime/sys_linux_amd64.s:357
#8 <signal handler called>
#9 0x00007f583f5b2530 in ?? () from /opt/authenitcate/lib64/libauth_r.so
#10 <signal handler called>
#11 runtime.futex () at /usr/lib/golang/src/runtime/sys_linux_amd64.s:536
#12 0x00007f58356267c2 in runtime.futexsleep (addr=0x7f58359dac10 <runtime.sched+272>, val=0, ns=60000000000) at /usr/lib/golang/src/runtime/os_linux.go:63
#13 0x00007f58356098f4 in runtime.notetsleep_internal (n=0x7f58359dac10 <runtime.sched+272>, ns=60000000000, ~r2=<optimized out>) at /usr/lib/golang/src/runtime/lock_futex.go:193
#14 0x00007f58356099d5 in runtime.notetsleep (n=0x7f58359dac10 <runtime.sched+272>, ns=60000000000, ~r2=<optimized out>) at /usr/lib/golang/src/runtime/lock_futex.go:216
#15 0x00007f5835634c56 in runtime.sysmon () at /usr/lib/golang/src/runtime/proc.go:4305
#16 0x00007f583562d258 in runtime.mstart1 () at /usr/lib/golang/src/runtime/proc.go:1206
#17 0x00007f583562d171 in runtime.mstart () at /usr/lib/golang/src/runtime/proc.go:1172
#18 0x00007f58356b384e in crosscall_amd64 () from /opt/authenitcate/lib64/pamc.so
#19 0x00007f5811193fc0 in ?? ()
#20 0x00007f5813994d40 in ?? ()
#21 0x00007f5813994b4f in ?? ()
#22 0x00007f5813994b4e in ?? ()
#23 0x00007f5811193ef0 in ?? ()
#24 0x0000000000000000 in ?? ()