qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [PATCH] Fix freezing bug in curses console


From: andrzej zaborowski
Subject: Re: [Qemu-devel] Re: [PATCH] Fix freezing bug in curses console
Date: Fri, 27 Feb 2009 22:01:27 +0100

2009/2/27 Anthony Liguori <address@hidden>:
> Matthew Bloch wrote:
>>
>> Hi there,
>>
>> We are running lots of kvm processes in screen and found that about 1 in
>> 5 froze shortly after startup startup with a backtrace like this one:
>>
>> #0  0xf7c7fcd9 in pthread_exit () from /lib/tls/libc.so.6
>> #1  0xf7cfbe62 in wresize () from /lib/libncurses.so.5
>> #2  0xf7cfb7ab in is_term_resized () from /lib/libncurses.so.5
>> #3  0xf7cfb877 in is_term_resized () from /lib/libncurses.so.5
>> #4  0xf7cfba31 in resize_term () from /lib/libncurses.so.5
>> #5  0x080d3dd9 in vga_init ()
>> #6  <signal handler called>
>> #7  0xf7c0da5b in free () from /lib/tls/libc.so.6
>> #8  0xf7c0effe in calloc () from /lib/tls/libc.so.6
>> #9  0xf7cf222e in newpad () from /lib/libncurses.so.5
>> #10 0x080d3549 in vga_init ()
>>
>> We're just using the lenny version of kvm from 2008-12-16.
>>
>> On casual inspection, the SIGWINCH signal handling looked ropey to me -
>> grandpa always told me not to do any real work in a signal handler, and
>> the backtrace suggested re-entrancy problems in curses, so I changed the
>> behaviour to set a flag and do the work in the main loop instead.  Maybe
>> I'm reading the backtrace wrong.
>>
>> So far that means that when you resize the window, the display is
>> corrupt until the VM outputs some text, or the user hits a key.  But I
>> think it has solved the freezing / crashing bug too - would appreciate
>> any comments on my analysis or proposed solution.
>>
>
> It's racy with select().  A better fix would be to create a pipe and write
> to that pipe in the SIGWINCH handler.  You should then register an io
> callback using qemu_set_fd_handler2() that does the actions for SIGWINCH.

Maybe a bottom half would work?  The scheduling of a bh shouldn't
constitute "real work".

Cheers




reply via email to

[Prev in Thread] Current Thread [Next in Thread]