Skip to content

libmomentum_url_normalizer を組み込むと runtime.futexsleep でスレッドが固まる #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mumumu opened this issue May 11, 2018 · 2 comments

Comments

@mumumu
Copy link

mumumu commented May 11, 2018

libmomentum_url_normalizer.a を組み込んでいるサーバの スレッドが固まり、停止する事象がある程度の頻度で起こっています。

core から backtrace を取ると、以下のように libmomentum_url_normalizer.a の cgo module 内で hang するスレッドが必ず残っており、他には hang する怪しいスレッドはないため、 golang の Runtime 内で固まっている疑いが濃いと見ています。

#0  runtime.futex () at /home/xx/local/go/src/runtime/sys_linux_amd64.s:423
#1  0x00007f8276b5f032 in runtime.futexsleep (addr=0x7f8276ea8670, val=0, ns=-1)
    at /home/tatsuya/local/go/src/runtime/os_linux.go:45
#2  0x00007f8276b476ff in runtime.notesleep (n=0x7f8276ea8670)
    at /home/tatsuya/local/go/src/runtime/lock_futex.go:145
#3  0x00007f8276b67111 in runtime.stopm () at /home/xx/local/go/src/runtime/proc.go:1650
#4  0x00007f8276b67f38 in runtime.findrunnable (gp#10=0xc42001e600, inheritTime=false)
    at /home/tatsuya/local/go/src/runtime/proc.go:2102
#5  0x00007f8276b68ad0 in runtime.schedule () at /home/xx/local/go/src/runtime/proc.go:2222
#6  0x00007f8276b68dd1 in runtime.park_m (gp=0xc4204309c0) at /home/tatsuya/local/go/src/runtime/proc.go:2285
#7  0x00007f8276b868e3 in runtime.mcall () at /home/xx/local/go/src/runtime/asm_amd64.s:269
#8  0x00007f8276ea8200 in runtime.work () from /usr/lib64/libmomentum_url_normalizer.a
#9  0x00007f82746b4d70 in ?? ()
#10 0x00007f8276ea8200 in runtime.work () from /usr/lib64/libmomentum_url_normalizer.a
#11 0x00007f82746b4d60 in ?? ()
#12 0x00007f8276b660a6 in runtime.mstart () at /home/xx/local/go/src/runtime/proc.go:1149
#13 0x00007f8276b8675b in runtime.rt0_go () at /home/xx/local/go/src/runtime/asm_amd64.s:169
#14 0x00007f8200000001 in ?? ()
#15 0x00007fff561afa38 in ?? ()
#16 0x0000000000000001 in ?? ()
#17 0x00007fff561afa38 in ?? ()
#18 0x00007f82746b5700 in ?? ()
#19 0x0000003a17807aa1 in start_thread () from /lib64/libpthread.so.0
#20 0x0000003a174e8bcd in clone () from /lib64/libc.so.6

golang の Runtime は内部で何をやっているかわからず(=スレッドセーフかどうかもわからない)、安定動作に寄与するか疑わしいことと、 libmomentum_url_normalizer 自体はそんなに難しいことはやっていないため、
golang で書かれた libmomentum_url_normalizer を別の言語で書き直す方向で検討中です。

momentum 側に何かアクションを要求するわけではありませんが、以上、御報告致します。

@mumumu
Copy link
Author

mumumu commented May 11, 2018

尚、これと似た事象は golang 本体でも issue として報告されていますが、再現が難しいためか修正されていません。

golang/go#23360

@dictav
Copy link
Contributor

dictav commented Jun 24, 2019

golang 本体では一応の解決がされたのでこちらも close します。
ご報告ありがとうございました。

@dictav dictav closed this as completed Jun 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants