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