Description of problem: virt-top exits sometimes (clean exit with code 1, not a segfault) when the window is resized. Version-Release number of selected component (if applicable): virt-top-1.0.4-3.fc13.x86_64 Also observed with the Debian virt-top package. How reproducible: Sometimes. Steps to Reproduce: 1. sudo virt-top -d 0.1 --debug /tmp/debug 2. Resize the window aggressively. 3. Actual results: Occasionally virt-top exits. Expected results: Should not exit. Additional info: Original report: http://rwmj.wordpress.com/2010/02/23/virt-top-is-in-debian/#comment-1256
This bug is quite hard to reproduce anyway, but it seems like it doesn't happen at all when virt-top is run under gdb. Possibly gdb alters the way that signals are delivered.
I think this is actually a libvirt bug. The strace output when it exits is: 18863 rt_sigaction(SIGTSTP, {0x3e77e192f0, [], SA_RESTORER|SA_RESTART, 0x3e75a337d0}, NULL, 8) = 0 18863 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0 18863 poll([{fd=3, events=POLLOUT}, {fd=4, events=POLLIN}], 2, -1) = 1 ([{fd=3, revents=POLLOUT}]) 18863 sendto(3, "\0\0\0\34 \0\200\206\0\0\0\1\0\0\0003\0\0\0\0\0\0\0r\0\0\0\0", 28, 0, NULL, 0) = 28 18863 poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, -1) = 1 ([{fd=3, revents=POLLIN}]) 18863 recvfrom(3, "\0\0\1h", 4, 0, NULL, NULL) = 4 18863 recvfrom(3, " \0\200\206\0\0\0\1\0\0\0\25\0\0\0\1\0\0\0q\0\0\0\0\0\0\0\21\0\0\0\21RHEL6200910210x32\0\0\0\0\0\0\vTmpBZ552994\0\0\0\0\21RHEL6201002033x64\0\0\0\0\0\0\nDebian5x64\0\0\0\0\0\fUbuntu910x64\0\0\0\16RHEL6Alpha3x64\0\0\0\0\0\rRHEL54Betax64\0\0\0\0\0\0\6F10x32\0\0\0\0\0\nCentOS5x32\0\0\0\0\0\rF13Rawhidex64\0\0\0\0\0\0\16TmpDebFirewall\0\0\0\0\0\rF12x64preview\0\0\0\0\0\0\nWin2003x32\0\0\0\0\0\7VSphere\0\0\0\0\vWindows7x32\0\0\0\0\vWindows7x64\0\0\0\0\vFreeBSD8x64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 356, 0, NULL, NULL) = 356 18863 write(2, "libvir: Remote error : no call waiting for reply with serial 113\n", 65) = 65 18863 write(1, "\33[17;1H\33[2J\33[?47l\0338\r\33[?1l\33>", 27) = 27 18863 ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B9600 opost isig icanon echo ...}) = 0 18863 write(2, "libvirt: VIR_ERR_RPC: VIR_FROM_REMOTE: no call waiting for reply with serial 113\n", 81) = 81 18863 exit_group(1) = ? I wonder if this is a regression (see bug 484414). My libvirt version is: libvirt-0.7.5-3.fc13.x86_64
Also occurs with libvirt-0.7.6-1.fc13.x86_64 The strace this time is roughly the same: 18952 recvfrom(3, "\0\0\1h", 4, 0, NULL, NULL) = 4 18952 recvfrom(3, " \0\200\206\0\0\0\1\0\0\0\25\0\0\0\1\0\0\6O\0\0\0\0\0\0\0\21\0\0\0\21RHEL6200910210x32\0\0\0\0\0\0\vTmpBZ552994\0\0\0\0\21RHEL6201002033x64\0\0\0\0\0\0\nDebian5x64\0\0\0\0\0\fUbuntu910x64\0\0\0\16RHEL6Alpha3x64\0\0\0\0\0\rRHEL54Betax64\0\0\0\0\0\0\6F10x32\0\0\0\0\0\nCentOS5x32\0\0\0\0\0\rF13Rawhidex64\0\0\0\0\0\0\16TmpDebFirewall\0\0\0\0\0\rF12x64preview\0\0\0\0\0\0\nWin2003x32\0\0\0\0\0\7VSphere\0\0\0\0\vWindows7x32\0\0\0\0\vWindows7x64\0\0\0\0\vFreeBSD8x64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 356, 0, NULL, NULL) = 356 18952 write(2, "libvir: Remote error : no call waiting for reply with serial 1615\n", 66) = 66 18952 write(1, "\33[26;1H\33[2J\33[?47l\0338\r\33[?1l\33>", 27) = 27 18952 ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B9600 opost isig icanon echo ...}) = 0 18952 write(2, "libvirt: VIR_ERR_RPC: VIR_FROM_REMOTE: no call waiting for reply with serial 1615\n", 82) = 82 18952 exit_group(1) = ?
Created attachment 396047 [details] strace from Rawhide libvirt / Rawhide virt-top Full strace output, requested by danpb.
Patch posted upstream (libvirt) to fix this: https://www.redhat.com/archives/libvir-list/2010-February/msg00824.html
This change was pushed to upstream libvirt which fixes the bug: http://libvirt.org/git/?p=libvirt.git;a=commitdiff;h=f4a43df52b7c84bda61863250d20135f044893da