On Thu, May 2, 2019 at 11:18 AM Marcin Romaszewicz <marc...@gmail.com> wrote: > > If that's the actual problem, you'd just be masking it, and producing an > invalid "x". Look here: > > func (r *Subid_info) Prepare_subid_logic(){ > r.Second_subid_8=fmt.Sprintf("1%07v", r.Second_subid) ----> panic happens > here. > } > > r.Second_subid is in an invalid state which normal Go code could not create. > This means that some other goroutine might be in the middle of changing its > value at the same time, and you have a race condition, so Ian Lance Taylor's > suggestion to run using the race detector is probably the best bet.
I agree. Look very closely at how r.Second_subid is set. The backtrace shows that it is a value of type string that is invalid. Ian > On Thu, May 2, 2019 at 11:13 AM 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) >> >> >> >> >> > /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. > > -- > 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.