On Thu, May 2, 2019 at 3:56 PM Ian Lance Taylor <i...@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 <emartinez1...@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 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