All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Kittel <kittel@in.tum.de>
To: kvm@vger.kernel.org
Cc: qemu-devel@nongnu.org
Subject: KVM freeze when using --serial
Date: Wed, 07 Apr 2010 16:32:33 +0200	[thread overview]
Message-ID: <4BBC9781.6030705@in.tum.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 1074 bytes --]

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





[-- Attachment #2: test.c --]
[-- Type: text/x-csrc, Size: 585 bytes --]

#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 #3: startvms.sh --]
[-- Type: application/x-sh, Size: 1178 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Kittel <kittel@in.tum.de>
To: kvm@vger.kernel.org
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] KVM freeze when using --serial
Date: Wed, 07 Apr 2010 16:32:33 +0200	[thread overview]
Message-ID: <4BBC9781.6030705@in.tum.de> (raw)

[-- Attachment #1: Type: text/plain, Size: 1111 bytes --]

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





[-- Attachment #2: test.c --]
[-- Type: text/x-csrc, Size: 585 bytes --]

#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 #3: startvms.sh --]
[-- Type: application/x-sh, Size: 1178 bytes --]

             reply	other threads:[~2010-04-07 14:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-07 14:32 Thomas Kittel [this message]
2010-04-07 14:32 ` [Qemu-devel] KVM freeze when using --serial Thomas Kittel
2010-04-07 14:52 ` Thomas Kittel
2010-04-07 14:52   ` [Qemu-devel] " Thomas Kittel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BBC9781.6030705@in.tum.de \
    --to=kittel@in.tum.de \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.