On Thu, Jun 09, 2022 at 03:08:51PM +0100, Richard W.M. Jones
wrote:> On Thu, Jun 09, 2022 at 02:14:07PM +0100, Daniel P. Berrang? wrote:
> > If you can get the test to core dump, then plain old GDB core
> > dump could also be useful - might identify which specific API
> > is being called, which can help restrict the size of the haystack
> > for code review.
>
> Eventually careful reading of this page revealed how to do this:
> https://pkg.go.dev/runtime
>
> The results unfortunately don't seem very useful. The stack trace
> appears to point to where the error was detected rather than where it
> was caused, but I've copied it below anyway.
>
> Also attached is the failure in the test suite if you turn *off*
> cgocheck, maybe that is useful.
> --
> Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
> Read my programming and virtualization blog: http://rwmj.wordpress.com
> nbdkit - Flexible, fast NBD server with plugins
> https://gitlab.com/nbdkit/nbdkit
> + requires nbdkit --version
> + go test -count=1 -v
> === RUN Test010Load
> --- PASS: Test010Load (0.00s)
> === RUN TestAioBuffer
> --- PASS: TestAioBuffer (0.00s)
> === RUN TestAioBufferFree
> --- PASS: TestAioBufferFree (0.00s)
> === RUN TestAioBufferBytesAfterFree
> SIGABRT: abort
> PC=0x3fdf6f9bac m=0 sigcode=18446744073709551610
So suggesting TestAioBufferBytesAfterFree is as fault, but quite
odd as that test case is trivial and whle it allocates some
native memory it doesn't seem to write to it. Unless the problem
happened in an earlier test case and we have delayed detection ?
I guess I'd try throwing darts at the wall by chopping out bits
of test code to see what makes it disappear.
Perhaps also try swapping MakeAioBuffer with MakeAioBufferZero
in case pre-existing data into the C.malloc()d block is confusing
Go ?
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|