#1  0x00000000004293f2 in runtime.futexsleep (addr=0x1b0a950 <runtime.m0+272>, 
val=0, ns=-1) at /usr/local/go/src/runtime/os_linux.go:45


I dive into the source code of golang 1.9.2 and find 
this: 
https://github.com/golang/go/blob/bf9ad7080d0a22acf502a60d8bc6ebbc4f5340ef/src/runtime/os_linux.go#L45

> // Some Linux kernels have a bug where futex of
> // FUTEX_WAIT returns an internal error code
> // as an errno. Libpthread ignores the return value
> // here, and so can we: as it says a few lines up,
> // spurious wakeups are allowed.
> if ns < 0 {
> futex(unsafe.Pointer(addr), _FUTEX_WAIT, val, nil, nil, 0)
> return
> }


Could I say that I meet a bug of the Linux kernel? The kernel is  
"3.10.0-514.el7.x86_64 
#1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux"

On Sunday, January 7, 2018 at 7:57:52 PM UTC+8, she...@pingcap.com wrote:
>
> The same problem occurs again with the same error message.
>
> The pstack result:
>
>> Thread 1 (process 12230):
>> #0 runtime.futex () at /usr/local/go/src/runtime/sys_linux_amd64.s:439
>> #1 0x00000000004293f2 in runtime.futexsleep (addr=0x1b0a950 
>> <runtime.m0+272>, val=0, ns=-1) at /usr/local/go/src/runtime/os_linux.go:45
>> #2 0x000000000040f9ab in runtime.notesleep (n=0x1b0a950 <runtime.m0+272>) 
>> at /usr/local/go/src/runtime/lock_futex.go:151
>> #3 0x00000000004315f5 in runtime.stopm () at 
>> /usr/local/go/src/runtime/proc.go:1680
>> #4 0x00000000004327d2 in runtime.findrunnable (gp=0x45cbd1 
>> <runtime.goexit+1>, inheritTime=false) at 
>> /usr/local/go/src/runtime/proc.go:2135
>> #5 0x000000000043328c in runtime.schedule () at 
>> /usr/local/go/src/runtime/proc.go:2255
>> #6 0x00000000004335a6 in runtime.park_m (gp=0xca01842780) at 
>> /usr/local/go/src/runtime/proc.go:2318
>> #7 0x0000000000459ffb in runtime.mcall () at 
>> /usr/local/go/src/runtime/asm_amd64.s:286
>> #8 0x0000000001b0a100 in ?? ()
>> #9 0x00007ffdc5be26e0 in ?? ()
>> #10 0x0000000001b0a100 in ?? ()
>> #11 0x00007ffdc5be26d0 in ?? ()
>> #12 0x0000000000430544 in runtime.mstart () at 
>> /usr/local/go/src/runtime/proc.go:1152
>> #13 0x0000000000459ec1 in runtime.rt0_go () at 
>> /usr/local/go/src/runtime/asm_amd64.s:186
>> #14 0x000000000000000a in ?? ()
>> #15 0x00007ffdc5be2718 in ?? ()
>> #16 0x000000000000000a in ?? ()
>> #17 0x00007ffdc5be2718 in ?? ()
>> #18 0x0000000000000000 in ?? ()
>>
>
>
> On Sunday, January 7, 2018 at 7:52:00 PM UTC+8, she...@pingcap.com wrote:
>>
>> We enable race detection in the test environment and disable it when 
>> building to be published binaries.
>> I double checked the building environment to make sure the race detection 
>> is disabled. For we care the performance very much.
>>
>> On Saturday, January 6, 2018 at 7:04:09 PM UTC+8, Dave Cheney wrote:
>>>
>>> You can still check for races if you build your production binary with 
>>> -race and deploy it as normal. There will be a some performance hit so you 
>>> probably shouldn't do this for all your binaries, but it will be a cheap 
>>> way to flush out any data races in your code.
>>>
>>> On Saturday, 6 January 2018 21:15:56 UTC+11, she...@pingcap.com wrote:
>>>>
>>>> Thanks for your advice!  I got the error message and the pstack result 
>>>> screenshot from one of our client.  I will try to use some OCR tools to 
>>>> convert the image to text next time.
>>>>
>>>> For the questions:
>>>> 1. The binary is built without race detector flag. I have checked it.
>>>> 2. We do not use cgo. I will check if there is any unsafe package.
>>>>
>>>> Unfortunately, I can not reproduce this problem. This is the first time 
>>>> and the only time I meet it.
>>>>
>>>> Thanks!
>>>>
>>>> On Saturday, January 6, 2018 at 1:28:24 AM UTC+8, Ian Lance Taylor 
>>>> wrote:
>>>>>
>>>>> On Fri, Jan 5, 2018 at 7:17 AM,  <she...@pingcap.com> wrote: 
>>>>> > 
>>>>> > I meet a strange problem when running a program on Linux. I get 
>>>>> "fatal: 
>>>>> > morestack on g0" from stderr. The process is still there but does 
>>>>> not 
>>>>> > respond anymore. When I use `curl 
>>>>> > http://ip:port/debug/pprof/goroutine?debug=1` to check the stack, 
>>>>> but it 
>>>>> > halts. There is nothing useful in stderr or dmesg. 
>>>>>
>>>>> (I would like to encourage you and everyone else to not post 
>>>>> screenshots of text.  Just include the text in the e-mail message as 
>>>>> text.  Screenshots of images, sure, but not text.  Thanks.) 
>>>>>
>>>>> The error "fatal: morestack on g0" should, of course, never happen. 
>>>>> The first questions are standard: have you run your program with the 
>>>>> race detector?  Do you use cgo or the unsafe package? 
>>>>>
>>>>> Beyond that, does the problem happen consistently?  Is there a way 
>>>>> that we can reproduce it? 
>>>>>
>>>>> Ian 
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to