[Libguestfs] Memory corruption when testing nbdkit python plugin with nbd-tester-client?

Richard W.M. Jones rjones at redhat.com
Mon Sep 26 12:29:47 UTC 2016


On Mon, Sep 26, 2016 at 02:18:02PM +0200, Carl-Daniel Hailfinger wrote:
> Hi,
> 
> has anyone ever run "make check" from nbd against nbdkit with a python
> plugin? I usually get segfaults during such a run, and sometimes various
> other errors happen before the segfault, suggesting that some memory
> corruption is underway.
> AFAICS a pure python plugin should not be able to cause memory corruption.

Correct, a python plugin should not cause memory corruption,
and nbdkit shouldn't segfault ever.

Did you get a stack trace from C (not from Python)?

Rich.

> Examples of nbdkit logs for running "make check" or subsets of it from
> nbd against nbdkit:
> 
> nbdkit -n -f python script=ssd-ftl-wearleveling.py disksize=52428800
> nbdkit: python[6]: error: ssd-ftl-wearleveling.py: callback failed: close
> nbdkit: python[7]: error: invalid flush request: expecting offset and
> length == 0
> nbdkit: python[7]: error: write reply: Connection reset by peer
> Segmentation fault
> 
> nbdkit -n -f python script=ssd-ftl-wearleveling.py disksize=52428800
> Fatal Python error: GC object already tracked
> Segmentation fault
> 
> nbdkit -n -f python script=ssd-ftl-wearleveling.py disksize=52428800
> Segmentation fault
> 
> nbdkit -n -f python script=ssd-ftl-wearleveling.py disksize=52428800
> nbdkit: python[1]: error: invalid flush request: expecting offset and
> length == 0
> nbdkit: python[1]: error: write reply: Broken pipe
> nbdkit: python[3]: error: client sent NBD_OPT_ABORT to abort the connection
> nbdkit: python[6]: error: ssd-ftl-wearleveling.py: callback failed: close
> Traceback (most recent call last):
>   File "ssd-ftl-wearleveling.py", line 221, in close
>     pickle.dump(lbahist, f)
>   File "/usr/lib/python2.7/pickle.py", line 1370, in dump
> Segmentation fault (core dumped)
> 
> My close function just dumps the disk image and write access history
> with python pickle. It does not have any return statement, and because
> of that I seriously doubt that said close function can fail.
> 
> I'm now trying to replicate this with example.py. Will report back.
> 
> Regards,
> Carl-Daniel
> 
> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW




More information about the Libguestfs mailing list