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

Re: [Xen-users] git error


  • From: Josef LiÅka <jl@xxxxxx>
  • Date: Wed, 10 Nov 2010 08:10:19 +0100
  • Cc: xen-users@xxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 09 Nov 2010 23:12:29 -0800
  • List-id: Xen user discussion <xen-users.lists.xensource.com>

Hi, list

I have done regression testing using git bisect and found following commit:

8b490610757b1c81131c1876a54fd0bfec301c52 is first bad commit
commit 8b490610757b1c81131c1876a54fd0bfec301c52
Author: Keir Fraser <keir.fraser@xxxxxxxxxx>
Date:ÂÂ Tue Jul 6 16:49:01 2010 +0100

ÂÂÂ libxl: Backported stuff from unstable
ÂÂÂ
ÂÂÂ Signed-off-by: Gianni Tedesco <gianni.tedesco@xxxxxxxxxx>

:040000 040000 54ca1943b0e67e41b0114a5c530a4cbe8064d1e6 14368197c6bcac10010bf0b34e9aba5edb2cce9f

It is a big patch (cca 300k), but only changes 2 files in xenstore: xs.c and xs.h. Separated patch for only xenstore folder
has 2k.

Next step is to try reverting changes in those files, but keep new libxl.

diff -Naur a/xenstore/xs.c b/xenstore/xs.c
--- a/xenstore/xs.c 2010-11-10 00:59:57.000000000 +0100
+++ b/xenstore/xs.c 2010-11-10 01:02:42.000000000 +0100
@@ -236,21 +236,9 @@
return get_handle(xs_domain_dev());
}

-void xs_daemon_close(struct xs_handle *h)
-{
+static void close_free_msgs(struct xs_handle *h) {
struct xs_stored_msg *msg, *tmsg;

-#ifdef USE_PTHREAD
- if (h->read_thr_exists) {
- pthread_cancel(h->read_thr);
- pthread_join(h->read_thr, NULL);
- }
-#endif
-
- mutex_lock(&h->request_mutex);
- mutex_lock(&h->reply_mutex);
- mutex_lock(&h->watch_mutex);
-
list_for_each_entry_safe(msg, tmsg, &h->reply_list, list) {
free(msg->body);
free(msg);
@@ -260,11 +248,9 @@
free(msg->body);
free(msg);
}
+}

- mutex_unlock(&h->request_mutex);
- mutex_unlock(&h->reply_mutex);
- mutex_unlock(&h->watch_mutex);
-
+static void close_fds_free(struct xs_handle *h) {
if (h->watch_pipe[0] != -1) {
close(h->watch_pipe[0]);
close(h->watch_pipe[1]);
@@ -275,6 +261,32 @@
free(h);
}

+void xs_daemon_destroy_postfork(struct xs_handle *h)
+{
+ close_free_msgs(h);
+ close_fds_free(h);
+}
+
+void xs_daemon_close(struct xs_handle *h)
+{
+#ifdef USE_PTHREAD
+ if (h->read_thr_exists) {
+ pthread_cancel(h->read_thr);
+ pthread_join(h->read_thr, NULL);
+ }
+#endif
+
+ mutex_lock(&h->request_mutex);
+ mutex_lock(&h->reply_mutex);
+ mutex_lock(&h->watch_mutex);
+
+ close_free_msgs(h);
+
+ mutex_unlock(&h->request_mutex);
+ mutex_unlock(&h->reply_mutex);
+ mutex_unlock(&h->watch_mutex);
+}
+
static bool read_all(int fd, void *data, unsigned int len)
{
while (len) {
diff -Naur a/xenstore/xs.h b/xenstore/xs.h
--- a/xenstore/xs.h 2010-11-10 00:59:57.000000000 +0100
+++ b/xenstore/xs.h 2010-11-10 01:02:42.000000000 +0100
@@ -48,6 +48,9 @@
/* Close the connection to the xs daemon. */
void xs_daemon_close(struct xs_handle *);

+/* Throw away the connection to the xs daemon, for use after fork(). */
+void xs_daemon_destroy_postfork(struct xs_handle *);
+
/* Get contents of a directory.
* Returns a malloced array: call free() on it after use.
* Num indicates size.

Best regards
Josef LiÅka

CHL | system care

Telefon: +420.272048055
Fax: +420.272048064
Mobil: +420.776026526 dennÄ 9:00 - 17:30
Jabber: jl@xxxxxx
https://www.chl.cz/


Dne 9.11.2010 16:53, Boris Derzhavets napsal(a):
> It seems to be in libxenstore. Does libvirt from your yum repo have any specific patches?
> (yum source libvirt and inspect /usr/src/redhat/SOURCES).
To honest i don't know. I don't have so many connections, so . . . .
But , on Ubuntu 10.10 current version of libvirt is 0.8.3 . It works with Xen (8-10 connections tested )

Boris.

--- On Tue, 11/9/10, Josef LiÅka <jl@xxxxxx> wrote:

From: Josef LiÅka <jl@xxxxxx>
Subject: Re: [Xen-users] git error
To: xen-users@xxxxxxxxxxxxxxxxxxx
Cc: "Boris Derzhavets" <bderzhavets@xxxxxxxxx>
Date: Tuesday, November 9, 2010, 9:58 AM

Hi,
I am on debian, so no yum here. Last libvirt version tested here is:
ii libvirt-bin 0.8.4-1 the programs for the libvirt library

It seems to be in libxenstore. Does libvirt from your yum repo have any specific patches? (yum source libvirt and inspect /usr/src/redhat/SOURCES).

S pozdravem
Josef LiÅka

CHL | system care

Telefon: +420.272048055
Fax: +420.272048064
Mobil: +420.776026526 dennÄ 9:00 - 17:30
Jabber: jl@xxxxxx
https://www.chl.cz/


Dne 9.11.2010 15:26, Boris Derzhavets napsal(a):
yum update libvirt will install 0.8.3.
Does it help ?

Boris.

--- On Tue, 11/9/10, Josef LiÅka <jl@xxxxxx> wrote:

From: Josef LiÅka <jl@xxxxxx>
Subject: [Xen-users] git error
To: xen-users@xxxxxxxxxxxxxxxxxxx
Date: Tuesday, November 9, 2010, 9:00 AM

Hi list,
I am hunting a bug between libvirt and xen, which seems to appeared after xen-4.0.1rc3..

The problem is a "pipe leak". Each connection to libvirt leaves 3 open files:
libvirtd 14758 root 18u unix 0xffff88002600ed00 351779 socket
libvirtd 14758 root 19r FIFO 0,8 351781 pipe
libvirtd 14758 root 20w FIFO 0,8 351781 pipe

Steps to reproduce:
1. install xen-4.0.1 and libvirt 0.7.6+
2. for i in `seq 1 1000`; do virsh -c xen://daman.vmin.cz list; done
if fails on "Too many open files"

After libvirt restart, works fine for cca 300 connections


I have not seen this with xen-3. Since libvirt links libxenstore:
ÂÂÂÂÂÂÂ libxenstore.so.3.0 => /usr/lib/libxenstore.so.3.0 (0x00007f8845fea000)
and since I have a box with xen-4.0.1rc3 which seems to work well, I have tried to replace libxenstore.so.3.0 with one from older box. Voila, no "pipe leak".

Now I would like to look into sources and try to find which change introduced this behavior. Unfortunatelly,
I am unable to clone git repo:


los:/mnt/y# git clone http://xenbits.xen.org/xen-4.0-testing.hg
Initialized empty Git repository in /mnt/y/xen-4.0-testing.hg/.git/
error: File 0000000000000000000000000000000000000000 (http://xenbits.xen.org/xen-4.0-testing.hg/objects/00/00000000000000000000000000000000000000) corrupt
Getting pack list for http://xenbits.xen.org/xen-4.0-testing.hg
Getting alternates list for http://xenbits.xen.org/xen-4.0-testing.hg
Also look at <a href="" moz-do-not-send="true" rel="nofollow" class="yiv672335030yiv1271301037moz-txt-link-rfc2396E" target="_blank" href="http://www.selenic.com/mercurial/">"http://www.selenic.com/mercurial/">mercur
Getting pack list for <a href="" moz-do-not-send="true" rel="nofollow" class="yiv672335030yiv1271301037moz-txt-link-rfc2396E" target="_blank" href="http://www.selenic.com/mercurial/">"http://www.selenic.com/mercurial/">mercur
error: Protocol <a href=""true" rel="nofollow" class="yiv672335030yiv1271301037moz-txt-link-freetext" target="_blank" href="http://xenbits.xen.org/xen-4.0-testing.hg">http://xenbits.xen.org/xen-4.0-testing.hg
Cannot obtain needed object 0000000000000000000000000000000000000000
fatal: Fetch failed.



Does anyone have a fresh copy of xen repo? I'd like to try "git bisect".

--

S pozdravem
Josef LiÅka

CHL | system care

Telefon: +420.272048055
Fax: +420.272048064
Mobil: +420.776026526 dennÄ 9:00 - 17:30
Jabber: jl@xxxxxx
https://www.chl.cz/


-----Inline Attachment Follows-----

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


!DSPAM:2,4cd96e94114762127911200!

Attachment: jl.vcf
Description: Vcard

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.