Hi there, I already posted this problem to #kvm on freenode.Please set me in CC: when replying to this mail, as I am not subscribed to this mailing lists right now.
The Scenario is as follows: I got 2 VM processes in userspace. The first is started with the parameter --monitor pty. => This results in a file /dev/pts/x in the host,(crw--w---- 1 kittel tty 136, 3 2010-04-07 15:51 /dev/pts/3 on my system)
Another VM is then started with the parameter --serial /dev/pts/3 => This results in /dev/ttyS0 inside the second VM. Both VMs are running debian lenny. The host (debian) uses qemu-kvm 0.12.3. "startvms.sh start" is used to start the VMs.Running the executable build from test.c in the second VM results in a freeze of this VM. (The test.c included uses /dev/ttyS1 as /dev/ttyS0 is the VMs serial console in my setup.)
The process uses 100% CPU and is stuck in kvm_mutex_lock(). Trying to use the build in gdbserver didn´t work because it also locked. Is there a way to tunnel one VMs monitor console to another VM? Thanks Thomas
#include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <signal.h> #include <pthread.h> void signal_handler(int signum){ pthread_exit(NULL); } void *readFile(void * ptr){ signal(SIGTERM, signal_handler); int fd; char buffer; fd = open("/dev/ttyS1", O_RDONLY); while(true){ read(fd, &buffer, 1); printf("%c", buffer); fflush(stdout); } close(fd); pthread_exit(NULL); } int main(int argc, char** argv){ pthread_t thread; pthread_create(&thread, NULL, &readFile, NULL); sleep(10); pthread_kill(thread, SIGTERM); pthread_join(thread, NULL); }
Attachment:
startvms.sh
Description: Bourne shell script