On Thu, May 2, 2019 at 12:12 PM Burak Serdar <bser...@ieee.org> wrote:
>
> On Thu, May 2, 2019 at 11:31 AM XXX ZZZ <emartinez1...@gmail.com> wrote:
> >
> > Hello,
> >
> > We are having a random panic on our go application that is happening once 
> > every million requests or so, and so far we haven't been able to reproduce 
> > it nor to even grasp what's going on.
> >
> > Basically our code goes like:
> >
> > type Subid_info struct{
> >     Affiliate_subid     string
> >     Second_subid        string
> >     Second_subid_8        string
> >     S2                    string
> >     Internal_subid        string
> >     Internal_subid_9    string
> >     Internal_subid_12     string
> >     Result                 string
> > }
> >
> > func (r *Subid_info) Prepare_subid_logic(){
> >     r.Second_subid_8=fmt.Sprintf("1%07v", r.Second_subid) ----> panic 
> > happens here.
> > }
> >
> > And the trace we get is:
> >
> > panic: runtime error: invalid memory address or nil pointer dereference
> > [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x466b6e]
> >
> > goroutine 17091 [running]:
> > unicode/utf8.RuneCountInString(0x0, 0x5, 0xc048c275a8)
> >     /usr/local/go/src/unicode/utf8/utf8.go:411 +0x2e
> > fmt.(*fmt).padString(0xc023c17780, 0x0, 0x5)
> >     /usr/local/go/src/fmt/format.go:113 +0x134
> > fmt.(*fmt).fmtS(0xc023c17780, 0x0, 0x5)
> >     /usr/local/go/src/fmt/format.go:347 +0x61
> > fmt.(*pp).fmtString(0xc023c17740, 0x0, 0x5, 0xc000000076)
>
> Right here in fmtString, the function gets a 0x0, 0x5 arg, which is I
> believe a string of length 5 with a nil slice. So it looks like
> somehow r.Second_subid has nil buffer here. When a string is used as
> an interface{}, afaik, the interface keeps the value, not the pointer
> to the string. So I can't see how this is possible. But I wonder if
> copying the value before sprintf could fix it:
>
> x:=r.Second_subid
> r.Second_subid_8=fmt.Sprintf("1%07v", x)

^^^^^^
This is a dumb idea, sorry. If you had a race, you'd still have a race.

>
>
>
>
> >     /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
> > code/sharedobjects/sources.(*Subid_info).Prepare_subid_logic(0xc019292f80, 
> > 0x2)
> >
> > Given that we can't reproduce it, what's the logical way to debug this and 
> > find out what's happening?
> >
> > Thanks!
> >
> > --
> > 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