WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-users

Re: [Xen-users] git error

Subject: 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
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <821680.59629.qm@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-id: Xen user discussion <xen-users.lists.xensource.com>
List-post: <mailto:xen-users@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
Organization: CHL
References: <821680.59629.qm@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-users-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101027 Thunderbird/3.0.10
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