Whenever I see fast* I think someone took shortcuts to make something “faster” 
without fully implementing the spec (or external constraints, like safe data 
access)

> On May 2, 2019, at 7:16 PM, Burak Serdar <bser...@ieee.org> wrote:
> 
>> On Thu, May 2, 2019 at 6:02 PM XXX ZZZ <emartinez1...@gmail.com> wrote:
>> 
>> No use of C via CGO at all.
>> 
>> Afaik, there isn't any unsafe use of the string, we are basically reading it 
>> from a get parameter (fasthttp server) on an http request and then adding it 
>> into this structure, most of the times is just a 5 char string. Out of 
>> several millions requests, this panic happens.
> 
> Does this "fasthttp" have any unsafe pointers?
> 
> 
>> 
>> I failed to find any kind of race using go race detector, I'm currently 
>> doing some more debugging, hopefuly I should have more info/tests soon.
>> 
>> El jueves, 2 de mayo de 2019, 20:44:33 (UTC-3), Burak Serdar escribió:
>>> 
>>> On Thu, May 2, 2019 at 3:56 PM Ian Lance Taylor <ia...@golang.org> wrote:
>>>> 
>>>>> On Thu, May 2, 2019 at 2:50 PM Anthony Martin <al...@pbrane.org> wrote:
>>>>> 
>>>>> What version of Go are you using?
>>>>> 
>>>>> XXX ZZZ <emarti...@gmail.com> once said:
>>>>>> fmt.(*pp).fmtString(0xc023c17740, 0x0, 0x5, 0xc000000076)
>>>>>>    /usr/local/go/src/fmt/print.go:448 +0x132
>>>>>> fmt.(*pp).printArg(0xc023c17740, 0x9978e0, 0xc016a68a30, 0x76)
>>>>>>    /usr/local/go/src/fmt/print.go:684 +0x880
>>>>>> fmt.(*pp).doPrintf(0xc023c17740, 0xa6e22f, 0x5, 0xc048c27818, 0x1, 0x1)
>>>>>>    /usr/local/go/src/fmt/print.go:1112 +0x3ff
>>>>>> fmt.Sprintf(0xa6e22f, 0x5, 0xc048c27818, 0x1, 0x1, 0x80, 0xa36200)
>>>>>>    /usr/local/go/src/fmt/print.go:214 +0x66
>>>>> 
>>>>> This shows signs of memory corruption. The last argument passed to
>>>>> fmtString (0xc000000076) should be the same as the last argument
>>>>> passed to printArg (0x76 or 'v') but it has some high bits set. Also,
>>>>> the pointer to the format string data changes from 0xa6e22f (which is
>>>>> probably in the .rodata section of the binary) to 0x0.
>>>>> 
>>>>> Something is amiss.
>>>> 
>>>> The change from 0x76 to 0xc000000076 does not necessarily indicate a
>>>> problem.  The stack backtrace does not know the types.  The value here
>>>> is a rune, which is 32 bits.  The compiler will only set the low order
>>>> 32 bits on the stack, leaving the high order 32 bits unset.  So the
>>>> 0xc000000000 could just be garbage left on the stack.
>>>> 
>>>> I don't *think* the format string is changing.  I think the 0 is from
>>>> the string being printed, not the format string.  They both happen to
>>>> be length 5.
>>> 
>>> There's something that doesn't make sense here. The 0 is from the
>>> string being printed, it is not the format string. But how can that
>>> be?
>>> 
>>> Even if there is a race, the string cannot have a 0 for the slice, can
>>> it? So the other option is when Sprintf is called, the string being
>>> printed is already corrupt. Can there be an overflow somewhere that is
>>> somehow undetected? Any unsafe use in the program?
>>> 
>>> 
>>>> 
>>>> 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 golan...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> --
>> 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.
> 
> -- 
> 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.

-- 
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