<div dir="ltr">Thanks Rich for you quick reply. I enabled logs and the program stuck again, here is the call stack and log:<div><div>Thread 1 (Thread 0x7fac58edc8c0 (LWP 1271)):</div><div>#0  0x00007fac578fac20 in __poll_nocancel () from /lib64/libc.so.6</div><div>#1  0x00007fac56df3c5a in virNetClientIOEventLoop () from /lib64/libvirt.so.0</div><div>#2  0x00007fac56df441b in virNetClientSendInternal () from /lib64/libvirt.so.0</div><div>#3  0x00007fac56df5843 in virNetClientSendWithReply () from /lib64/libvirt.so.0</div><div>#4  0x00007fac56df6052 in virNetClientProgramCall () from /lib64/libvirt.so.0</div><div>#5  0x00007fac56dcbfe2 in callFull.isra.2 () from /lib64/libvirt.so.0</div><div>#6  0x00007fac56de213d in remoteDomainCreateXML () from /lib64/libvirt.so.0</div><div>#7  0x00007fac56d82151 in virDomainCreateXML () from /lib64/libvirt.so.0</div><div>#8  0x00007fac58acca50 in launch_libvirt () from /lib64/libguestfs.so.0</div><div>#9  0x00007fac58ac2b2b in guestfs_impl_launch () from /lib64/libguestfs.so.0</div><div>#10 0x00007fac58a5eba5 in guestfs_launch () from /lib64/libguestfs.so.0</div><div>#11 0x00000000004117ca in main ()</div></div><div><br></div><div><br></div><div>Log:</div><div><div>2016-Aug-29 15:02:07 main:1385 Entering main()</div><div>2016-Aug-29 15:02:07 main:1393 guestfs_create succeeded</div><div>2016-Aug-29 15:02:07 main:1398 guestfs_set_network ok</div><div>2016-Aug-29 15:02:07 main:1406 Trying to add drive /dev/xvdc</div><div>libguestfs: trace: add_drive "/dev/xvdc" "format:raw"</div><div>libguestfs: trace: add_drive = 0</div><div>2016-Aug-29 15:02:07 main:1413 guestfs_add_drive_opts succeeded for drive: /dev/xvdc</div><div>libguestfs: trace: launch</div><div>libguestfs: trace: get_tmpdir</div><div>libguestfs: trace: get_tmpdir = "/tmp"</div><div>libguestfs: trace: version</div><div>libguestfs: trace: version = <struct guestfs_version *></div><div>libguestfs: trace: get_backend</div><div>libguestfs: trace: get_backend = "libvirt"</div><div>libguestfs: launch: program=linuxxenfix</div><div>libguestfs: launch: version=1.28.1rhel=7,release=1.55.el7.centos.2,libvirt</div><div>libguestfs: launch: backend registered: unix</div><div>libguestfs: launch: backend registered: uml</div><div>libguestfs: launch: backend registered: libvirt</div><div>libguestfs: launch: backend registered: direct</div><div>libguestfs: launch: backend=libvirt</div><div>libguestfs: launch: tmpdir=/tmp/libguestfsWmxUbv</div><div>libguestfs: launch: umask=0022</div><div>libguestfs: launch: euid=0</div><div>libguestfs: libvirt version = 1002017 (1.2.17)</div><div>libguestfs: guest random name = guestfs-0h3k91d5369tcde3</div><div>libguestfs: [00009ms] connect to libvirt</div><div>libguestfs: opening libvirt handle: URI = qemu:///system, auth = default+wrapper, flags = 0</div><div>libguestfs: successfully opened libvirt handle: conn = 0xd84c40</div><div>libguestfs: qemu version (reported by libvirt) = 1005003 (1.5.3)</div><div>libguestfs: [00010ms] get libvirt capabilities</div><div>libguestfs: [00012ms] parsing capabilities XML</div><div>libguestfs: trace: get_backend_setting "force_tcg"</div><div>libguestfs: trace: get_backend_setting = NULL (error)</div><div>libguestfs: trace: get_backend_setting "internal_libvirt_label"</div><div>libguestfs: trace: get_backend_setting = NULL (error)</div><div>libguestfs: trace: get_backend_setting "internal_libvirt_imagelabel"</div><div>libguestfs: trace: get_backend_setting = NULL (error)</div><div>libguestfs: trace: get_backend_setting "internal_libvirt_norelabel_disks"</div><div>libguestfs: trace: get_backend_setting = NULL (error)</div><div>libguestfs: [00012ms] build appliance</div><div>libguestfs: trace: get_cachedir</div><div>libguestfs: trace: get_cachedir = "/var/tmp"</div><div>libguestfs: [00030ms] begin building supermin appliance</div><div>libguestfs: [00030ms] run supermin</div><div>libguestfs: command: run: /usr/bin/supermin5</div><div>libguestfs: command: run: \ --build</div><div>libguestfs: command: run: \ --verbose</div><div>libguestfs: command: run: \ --if-newer</div><div>libguestfs: command: run: \ --lock /var/tmp/.guestfs-0/lock</div><div>libguestfs: command: run: \ --copy-kernel</div><div>libguestfs: command: run: \ -f ext2</div><div>libguestfs: command: run: \ --host-cpu x86_64</div><div>libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d</div><div>libguestfs: command: run: \ -o /var/tmp/.guestfs-0/appliance.d</div><div>supermin: version: 5.1.10</div><div>supermin: rpm: detected RPM version 4.11</div><div>supermin: package handler: fedora/rpm</div><div>supermin: acquiring lock on /var/tmp/.guestfs-0/lock</div><div>supermin: build: /usr/lib64/guestfs/supermin.d</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/base.tar.gz type gzip base image (tar)</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/daemon.tar.gz type gzip base image (tar)</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/excludefiles type uncompressed excludefiles</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/hostfiles type uncompressed hostfiles</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/init.tar.gz type gzip base image (tar)</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/packages type uncompressed packages</div><div>supermin: build: visiting /usr/lib64/guestfs/supermin.d/udev-rules.tar.gz type gzip base image (tar)</div><div>supermin: build: 184 packages, including dependencies</div><div>supermin: build: 30935 files</div><div>supermin: build: 12031 files, after removing unreadable files</div><div>supermin: build: 9035 files, after matching excludefiles</div><div>supermin: build: 9039 files, after adding hostfiles</div><div>supermin: build: 9068 files, after munging</div><div>supermin: kernel: picked kernel vmlinuz-3.10.0-327.13.1.el7.x86_64</div><div>supermin: kernel: picked modules path /lib/modules/3.10.0-327.13.1.el7.x86_64</div><div>supermin: kernel: kernel_version 3.10.0-327.13.1.el7.x86_64</div><div>supermin: kernel: modules /lib/modules/3.10.0-327.13.1.el7.x86_64</div><div>supermin: ext2: creating empty ext2 filesystem '/var/tmp/.guestfs-0/appliance.d.omlxj0zh/root'</div><div>supermin: ext2: populating from base image</div><div>supermin: ext2: copying files from host filesystem</div><div>supermin: ext2: copying kernel modules</div><div>supermin: ext2: creating minimal initrd '/var/tmp/.guestfs-0/appliance.d.omlxj0zh/initrd'</div><div>supermin: ext2: wrote 34 modules to minimal initrd</div><div>supermin: renaming /var/tmp/.guestfs-0/appliance.d.omlxj0zh to /var/tmp/.guestfs-0/appliance.d</div><div>libguestfs: [62773ms] finished building supermin appliance</div><div>libguestfs: trace: disk_create "/tmp/libguestfsWmxUbv/overlay1" "qcow2" -1 "backingfile:/var/tmp/.guestfs-0/appliance.d/root" "backingformat:raw"</div><div>libguestfs: command: run: qemu-img</div><div>libguestfs: command: run: \ create</div><div>libguestfs: command: run: \ -f qcow2</div><div>libguestfs: command: run: \ -o backing_file=/var/tmp/.guestfs-0/appliance.d/root,backing_fmt=raw</div><div>libguestfs: command: run: \ /tmp/libguestfsWmxUbv/overlay1</div><div>Formatting '/tmp/libguestfsWmxUbv/overlay1', fmt=qcow2 size=4294967296 backing_file='/var/tmp/.guestfs-0/appliance.d/root' backing_fmt='raw' encryption=off cluster_size=65536 lazy_refcounts=off </div><div>libguestfs: trace: disk_create = 0</div><div>libguestfs: set_socket_create_context: context_new failed: kernel: Invalid argument [you can ignore this UNLESS using SELinux + sVirt]</div><div>libguestfs: [62889ms] create libvirt XML</div><div>libguestfs: command: run: dmesg | grep -Eoh 'lpj=[[:digit:]]+'</div><div>libguestfs: read_lpj_from_dmesg: calculated lpj=2394042</div><div>libguestfs: trace: get_cachedir</div><div>libguestfs: trace: get_cachedir = "/var/tmp"</div><div>libguestfs: libvirt XML:\n<?xml version="1.0"?>\n<domain type="qemu" xmlns:qemu="<a href="http://libvirt.org/schemas/domain/qemu/1.0">http://libvirt.org/schemas/domain/qemu/1.0</a>">\n  <name>guestfs-0h3k91d5369tcde3</name>\n  <memory unit="MiB">500</memory>\n  <currentMemory unit="MiB">500</currentMemory>\n  <vcpu>1</vcpu>\n  <clock offset="utc">\n    <timer name="rtc" tickpolicy="catchup"/>\n    <timer name="pit" tickpolicy="delay"/>\n    <timer name="hpet" present="no"/>\n  </clock>\n  <os>\n    <type>hvm</type>\n    <kernel>/var/tmp/.guestfs-0/appliance.d/kernel</kernel>\n    <initrd>/var/tmp/.guestfs-0/appliance.d/initrd</initrd>\n    <cmdline>panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check lpj=2394042 acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 guestfs_network=1 TERM=linux</cmdline>\n    <bios useserial="yes"/>\n  </os>\n  <on_reboot>destroy</on_reboot>\n  <devices>\n    <controller type="scsi" index="0" model="virtio-scsi"/>\n    <disk device="disk" type="block">\n      <source dev="/dev/xvdc"/>\n      <target dev="sda" bus="scsi"/>\n      <driver name="qemu" type="raw" cache="writeback"/>\n      <address type="drive" controller="0" bus="0" target="0" unit="0"/>\n    </disk>\n    <disk type="file" device="disk">\n      <source file="/tmp/libguestfsWmxUbv/overlay1"/>\n      <target dev="sdb" bus="scsi"/>\n      <driver name="qemu" type="qcow2" cache="unsafe"/>\n      <address type="drive" controller="0" bus="0" target="1" unit="0"/>\n      <shareable/>\n    </disk>\n    <serial type="unix">\n      <source mode="connect" path="/tmp/libguestfsWmxUbv/console.sock"/>\n      <target port="0"/>\n    </serial>\n    <channel type="unix">\n      <source mode="connect" path="/tmp/libguestfsWmxUbv/guestfsd.sock"/>\n      <target type="virtio" name="org.libguestfs.channel.0"/>\n    </channel>\n  </devices>\n  <qemu:commandline>\n    <qemu:env name="TMPDIR" value="/var/tmp"/>\n    <qemu:arg value="-netdev"/>\n    <qemu:arg value="user,id=usernet,net=<a href="http://169.254.0.0/16">169.254.0.0/16</a>"/>\n    <qemu:arg value="-device"/>\n    <qemu:arg value="virtio-net-pci,netdev=usernet"/>\n  </qemu:commandline>\n</domain>\n</div><div>libguestfs: trace: get_cachedir</div><div>libguestfs: trace: get_cachedir = "/var/tmp"</div><div>libguestfs: command: run: ls</div><div>libguestfs: command: run: \ -a</div><div>libguestfs: command: run: \ -l</div><div>libguestfs: command: run: \ -Z /var/tmp/.guestfs-0</div><div>libguestfs: drwxr-xr-x root root ?                                .</div><div>libguestfs: drwxrwxrwt root root ?                                ..</div><div>libguestfs: drwxr-xr-x root root ?                                appliance.d</div><div>libguestfs: -rw-r--r-- root root ?                                lock</div><div>libguestfs: command: run: ls</div><div>libguestfs: command: run: \ -a</div><div>libguestfs: command: run: \ -l</div><div>libguestfs: command: run: \ -Z /tmp/libguestfsWmxUbv</div><div>libguestfs: drwxr-xr-x root root ?                                .</div><div>libguestfs: drwxrwxrwt root root ?                                ..</div><div>libguestfs: srw-rw---- root qemu ?                                console.sock</div><div>libguestfs: srw-rw---- root qemu ?                                guestfsd.sock</div><div>libguestfs: -rw-r--r-- root root ?                                overlay1</div><div>libguestfs: -rwxr-xr-x root root ?                                umask-check</div><div>libguestfs: [62900ms] launch libvirt guest</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-29 21:42 GMT+08:00 Richard W.M. Jones <span dir="ltr"><<a href="mailto:rjones@redhat.com" target="_blank">rjones@redhat.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Aug 29, 2016 at 08:24:43PM +0800, Baochuan Wu wrote:<br>
> Hello everyone,<br>
><br>
> I am using libguestfs on CentOS 7.2. I am trying to modify Red Hat 5.4<br>
> disks. I am using C/C++. I found the process gets stuck<br>
> inside guestfs_launch:<br>
><br>
> Thread 1 (Thread 0x7fe3aa6148c0 (LWP 1265)):<br>
> #0  0x00007fe3a9032c20 in __poll_nocancel () from /lib64/libc.so.6<br>
> #1  0x00007fe3aa1e5ea4 in read_data () from /lib64/libguestfs.so.0<br>
> #2  0x00007fe3aa20af0c in guestfs_int_recv_from_daemon () from<br>
> /lib64/libguestfs.so.0<br>
> #3  0x00007fe3aa204ae0 in launch_libvirt () from /lib64/libguestfs.so.0<br>
> #4  0x00007fe3aa1fab2b in guestfs_impl_launch () from /lib64/libguestfs.so.0<br>
> #5  0x00007fe3aa196b4d in guestfs_launch () from /lib64/libguestfs.so.0<br>
> #6  0x00000000004116f8 in main ()<br>
<br>
</span>Before you call guestfs_launch(), call:<br>
<br>
  guestfs_set_verbose (1);<br>
  guestfs_set_trace (1);<br>
<br>
That should print (on stderr) a lot more information about what is<br>
going on. (<a href="http://libguestfs.org/guestfs-faq.1.html#how-do-i-debug-when-using-the-api" rel="noreferrer" target="_blank">http://libguestfs.org/<wbr>guestfs-faq.1.html#how-do-i-<wbr>debug-when-using-the-api</a>)<br>
<br>
If printing on stderr is not convenient from your program, then you<br>
can also set up logging.  See the example here:<br>
<br>
<a href="https://github.com/libguestfs/libguestfs/blob/master/examples/debug-logging.c" rel="noreferrer" target="_blank">https://github.com/libguestfs/<wbr>libguestfs/blob/master/<wbr>examples/debug-logging.c</a><br>
<br>
The libguestfs-test-tool output looks fine BTW.<br>
<br>
Rich.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Richard Jones, Virtualization Group, Red Hat <a href="http://people.redhat.com/~rjones" rel="noreferrer" target="_blank">http://people.redhat.com/~<wbr>rjones</a><br>
Read my programming and virtualization blog: <a href="http://rwmj.wordpress.com" rel="noreferrer" target="_blank">http://rwmj.wordpress.com</a><br>
virt-p2v converts physical machines to virtual machines.  Boot with a<br>
live CD or over the network (PXE) and turn machines into KVM guests.<br>
<a href="http://libguestfs.org/virt-v2v" rel="noreferrer" target="_blank">http://libguestfs.org/virt-v2v</a><br>
</font></span></blockquote></div><br></div>