<div dir="ltr">thanks to all and that is working with libvirt-1.2.0 and xen-4.3.1.<div><br></div><div>thanks to all people for their valuable suggestions.</div><div><br></div><div><br></div><div>regards,</div><div>cooldharma06.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Dec 19, 2013 at 5:01 PM, Dario Faggioli <span dir="ltr"><<a href="mailto:dario.faggioli@citrix.com" target="_blank">dario.faggioli@citrix.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[Moving this to libvir, libvir-users in Bcc. Also, added xen-devel]<br>
<br>
Jim,<br>
<br>
cooldharma06 reports having issues when destroying VMs with libvirt<br>
1.2.0 and Xen 4.2.1 (is that the case, cooldharma06)?<br>
<br>
Look at the stack trace at the end of this message, or here:<br>
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=1044838" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=1044838</a><br>
<br>
Ian, since it looks like events are involved... Any idea?<br>
<br>
cooldharma06, about the Xen 4.2.1, thing, is there a specific reason why<br>
you use it instead, of, e.g., 4.3.x ? Since you are building from source<br>
anyway, could you at least try Xen 4.3, to see whether the issue could<br>
be a bug in 4.2's libxl? I'm asking because, with both Xen 4.3 and the<br>
curret git tip, I don't have issues destroying domains with virsh.<br>
<br>
Thanks and Regards,<br>
Dario<br>
<br>
On gio, 2013-12-19 at 15:42 +0530, cool dharma06 wrote:<br>
> i did the debugging as you said. Kindly refer the following logs:<br>
><br>
><br>
> (gdb) c<br>
> Continuing.<br>
> thread apply all bt<br>
> [New Thread 0x7fc337c6b700 (LWP 29520)]<br>
><br>
><br>
> Program received signal SIGSEGV, Segmentation fault.<br>
> 0x0000000000000000 in ?? ()<br>
> (gdb) thread apply all bt<br>
><br>
><br>
> Thread 12 (Thread 0x7fc337c6b700 (LWP 29520)):<br>
> #0  0x00007fc33509f18d in read ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc32b1555c4 in read_all (fd=26, data=0x7fc3380e0a70,<br>
> data@entry=0x20, len=len@entry=16, nonblocking=nonblocking@entry=0) at<br>
> xs.c:365<br>
> #2  0x00007fc32b1556d8 in read_message (h=h@entry=0x7fc324013ee0,<br>
> nonblocking=nonblocking@entry=0) at xs.c:1071<br>
> #3  0x00007fc32b156005 in read_thread (arg=0x7fc324013ee0) at<br>
> xs.c:1137<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 11 (Thread 0x7fc330e7f700 (LWP 29170)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbd80,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0cb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db870) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 10 (Thread 0x7fc33067e700 (LWP 29171)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbd80,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0cb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db640) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 9 (Thread 0x7fc32fe7d700 (LWP 29172)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbd80,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0cb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db870) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 8 (Thread 0x7fc32f67c700 (LWP 29173)):<br>
> #0  0x00007fc33497cb9f in realloc ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #1  0x00007fc3349eec85 in __vasprintf_chk ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> ---Type <return> to continue, or q <return> to quit---<br>
> #2  0x00007fc3371aac0a in vasprintf (__ap=0x7fc32f67b6d0,<br>
> __fmt=0x7fc337391017 "%llu: %s : %s:%d : %s\n", __ptr=0x7fc32f67b830)<br>
>     at /usr/include/x86_64-linux-gnu/bits/stdio2.h:199<br>
> #3  virVasprintfInternal (report=report@entry=false, domcode=0,<br>
> filename=0x0, funcname=0x0, linenr=0, strp=0x7fc32f67b830,<br>
>     fmt=fmt@entry=0x7fc337391017 "%llu: %s : %s:%d : %s\n",<br>
> list=list@entry=0x7fc32f67b6d0) at util/virstring.c:337<br>
> #4  0x00007fc3371aad1b in virAsprintfInternal<br>
> (report=report@entry=false, domcode=domcode@entry=0,<br>
> filename=filename@entry=0x0, funcname=funcname@entry=0x0,<br>
>     linenr=linenr@entry=0, strp=strp@entry=0x7fc32f67b830,<br>
> fmt=fmt@entry=0x7fc337391017 "%llu: %s : %s:%d : %s\n") at<br>
> util/virstring.c:358<br>
> #5  0x00007fc33718cb59 in virLogFormatString (str=<optimized out>,<br>
> priority=VIR_LOG_DEBUG, funcname=0x7fc337394734 "virObjectRef",<br>
> linenr=293, msg=0x7fc32f67b830)<br>
>     at util/virlog.c:719<br>
> #6  virLogVMessage (source=VIR_LOG_FROM_TRACE, priority=VIR_LOG_DEBUG,<br>
> filename=0x7fc337394597 "util/virobject.c", linenr=293,<br>
> funcname=0x7fc337394734 "virObjectRef",<br>
>     metadata=0x0, fmt=fmt@entry=0x7fc3373945f1 "OBJECT_REF: obj=%p",<br>
> vargs=vargs@entry=0x7fc32f67b8c0) at util/virlog.c:846<br>
> #7  0x00007fc33718cfc7 in virLogMessage<br>
> (source=source@entry=VIR_LOG_FROM_TRACE,<br>
> priority=priority@entry=VIR_LOG_DEBUG,<br>
>     filename=filename@entry=0x7fc337394597 "util/virobject.c",<br>
> linenr=linenr@entry=293, funcname=funcname@entry=0x7fc337394734<br>
> "virObjectRef",<br>
>     metadata=metadata@entry=0x0, fmt=fmt@entry=0x7fc3373945f1<br>
> "OBJECT_REF: obj=%p") at util/virlog.c:778<br>
> #8  0x00007fc33719c3d7 in virObjectRef (anyobj=0x7fc338102720) at<br>
> util/virobject.c:293<br>
> #9  0x00007fc32af1824f in libxlDriverConfigGet<br>
> (driver=driver@entry=0x7fc338108930) at libxl/libxl_conf.c:1124<br>
> #10 0x00007fc32af1a50e in libxlVmCleanup<br>
> (driver=driver@entry=0x7fc338108930, vm=vm@entry=0x7fc32400f530,<br>
> reason=reason@entry=VIR_DOMAIN_SHUTOFF_DESTROYED)<br>
>     at libxl/libxl_driver.c:264<br>
> #11 0x00007fc32af20274 in libxlVmReap (driver=0x7fc338108930,<br>
> vm=0x7fc32400f530, reason=VIR_DOMAIN_SHUTOFF_DESTROYED) at<br>
> libxl/libxl_driver.c:338<br>
> #12 0x00007fc32af207de in libxlDomainDestroyFlags (dom=0x7fc3380e3770,<br>
> flags=<optimized out>) at libxl/libxl_driver.c:1507<br>
> #13 0x00007fc33723cd37 in virDomainDestroy<br>
> (domain=domain@entry=0x7fc3380e3770) at libvirt.c:2342<br>
> #14 0x00007fc337cb9ba4 in remoteDispatchDomainDestroy (args=<optimized<br>
> out>, rerr=0x7fc32f67bcd0, client=0x7fc32400ee60, server=<optimized<br>
> out>, msg=<optimized out>)<br>
>     at remote_dispatch.h:3165<br>
> #15 remoteDispatchDomainDestroyHelper (server=<optimized out>,<br>
> client=0x7fc32400ee60, msg=<optimized out>, rerr=0x7fc32f67bcd0,<br>
> args=<optimized out>,<br>
>     ret=<optimized out>) at remote_dispatch.h:3143<br>
> #16 0x00007fc3372b4d79 in virNetServerProgramDispatchCall<br>
> (msg=0x7fc324014070, client=0x7fc32400ee60, server=0x7fc3380dbba0,<br>
> prog=0x7fc324007750)<br>
>     at rpc/virnetserverprogram.c:435<br>
> #17 virNetServerProgramDispatch (prog=0x7fc324007750,<br>
> server=server@entry=0x7fc3380dbba0, client=0x7fc32400ee60,<br>
> msg=0x7fc324014070) at rpc/virnetserverprogram.c:305<br>
> #18 0x00007fc3372aea78 in virNetServerProcessMsg (msg=<optimized out>,<br>
> prog=<optimized out>, client=<optimized out>, srv=0x7fc3380dbba0) at<br>
> rpc/virnetserver.c:165<br>
> #19 virNetServerHandleJob (jobOpaque=<optimized out>,<br>
> opaque=0x7fc3380dbba0) at rpc/virnetserver.c:186<br>
> #20 0x00007fc3371af02e in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db640) at util/virthreadpool.c:144<br>
> #21 0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #22 0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #23 0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #24 0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 7 (Thread 0x7fc32ee7b700 (LWP 29174)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbd80,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0cb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db870) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> ---Type <return> to continue, or q <return> to quit---<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 6 (Thread 0x7fc32e67a700 (LWP 29175)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbe18,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0eb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db640) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 5 (Thread 0x7fc32de79700 (LWP 29176)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbe18,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0eb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db870) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 4 (Thread 0x7fc32d678700 (LWP 29177)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbe18,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0eb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db640) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 3 (Thread 0x7fc32ce77700 (LWP 29178)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbe18,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0eb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db870) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> ---Type <return> to continue, or q <return> to quit---<br>
> Thread 2 (Thread 0x7fc32c676700 (LWP 29179)):<br>
> #0  0x00007fc33509c2d4 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #1  0x00007fc3371ae9ea in virCondWait (c=c@entry=0x7fc3380dbe18,<br>
> m=m@entry=0x7fc3380dbd58) at util/virthreadpthread.c:117<br>
> #2  0x00007fc3371af0eb in virThreadPoolWorker<br>
> (opaque=opaque@entry=0x7fc3380db640) at util/virthreadpool.c:103<br>
> #3  0x00007fc3371ae686 in virThreadHelper (data=<optimized out>) at<br>
> util/virthreadpthread.c:161<br>
> #4  0x00007fc335097b50 in start_thread ()<br>
> from /lib/x86_64-linux-gnu/libpthread.so.0<br>
> #5  0x00007fc3349daa3d in clone ()<br>
> from /lib/x86_64-linux-gnu/libc.so.6<br>
> #6  0x0000000000000000 in ?? ()<br>
><br>
><br>
> Thread 1 (Thread 0x7fc337c4d7c0 (LWP 29169)):<br>
> #0  0x0000000000000000 in ?? ()<br>
> #1  0x00007fc32ace881e in libxl_osevent_occurred_timeout<br>
> (ctx=<optimized out>, for_libxl=0x7fc3380edf38) at libxl_event.c:1039<br>
> #2  0x00007fc32af199c7 in libxlDomainObjTimerCallback<br>
> (timer=<optimized out>, timer_info=0x7fc3380e3310) at<br>
> libxl/libxl_domain.c:216<br>
> #3  0x00007fc33717cf7d in virEventPollDispatchTimeouts () at<br>
> util/vireventpoll.c:451<br>
> #4  virEventPollRunOnce () at util/vireventpoll.c:644<br>
> #5  0x00007fc33717b70b in virEventRunDefaultImpl () at<br>
> util/virevent.c:274<br>
> #6  0x00007fc3372b0065 in virNetServerRun (srv=0x7fc3380dbba0) at<br>
> rpc/virnetserver.c:1112<br>
> #7  0x00007fc337c9851c in main (argc=<optimized out>, argv=<optimized<br>
> out>) at libvirtd.c:1513<br>
> (gdb)<br>
> (gdb)<br>
><br>
><br>
> ****<br>
><br>
><br>
> regards,<br>
> cooldharma06.<br>
><br>
><br>
> On Thu, Dec 19, 2013 at 3:30 PM, Daniel P. Berrange<br>
> <<a href="mailto:berrange@redhat.com">berrange@redhat.com</a>> wrote:<br>
>         On Thu, Dec 19, 2013 at 03:09:14PM +0530, cool dharma06 wrote:<br>
>         > I am newbie to this gdb debugging. now i did the bt in the<br>
>         debugging. In my<br>
>         > side still it showing the error. Following are the<br>
>         stacktrace which i got.<br>
>         > Kindly refer the following logs for full information:<br>
>         ><br>
>         > ****<br>
>         > [New Thread 0x7f8503695700 (LWP 20012)]<br>
>         ><br>
>         > Program received signal SIGSEGV, Segmentation fault.<br>
>         > 0x0000000000000000 in ?? ()<br>
>         > (gdb) bt<br>
>         > #0  0x0000000000000000 in ?? ()<br>
>         > #1  0x00007f84f671281e in libxl_osevent_occurred_timeout<br>
>         (ctx=<optimized<br>
>         > out>, for_libxl=0x7f8503bbbc38) at libxl_event.c:1039<br>
>         > #2  0x00007f84f69439c7 in libxlDomainObjTimerCallback<br>
>         (timer=<optimized<br>
>         > out>, timer_info=0x7f8503bb5930) at libxl/libxl_domain.c:216<br>
>         > #3  0x00007f8502ba6f7d in virEventPollDispatchTimeouts () at<br>
>         > util/vireventpoll.c:451<br>
>         > #4  virEventPollRunOnce () at util/vireventpoll.c:644<br>
>         > #5  0x00007f8502ba570b in virEventRunDefaultImpl () at<br>
>         util/virevent.c:274<br>
>         > #6  0x00007f8502cda065 in virNetServerRun<br>
>         (srv=0x7f8503ba6ba0) at<br>
>         > rpc/virnetserver.c:1112<br>
>         > #7  0x00007f85036c251c in main (argc=<optimized out>,<br>
>         argv=<optimized out>)<br>
>         > at libvirtd.c:1513<br>
>         > (gdb)<br>
><br>
><br>
>         In this case, that stack trace looks like it ought to be<br>
>         sufficient<br>
>         to identify the problem - a clear NULL pointer reference. In<br>
>         general<br>
>         though you want to capture a stack trace of all threads in a<br>
>         program<br>
><br>
>         eg instead of 'bt', do 'thread apply all bt' next time.<br>
><br>
>         Regards,<br>
>         Daniel<br>
>         --<br>
>         |: <a href="http://berrange.com" target="_blank">http://berrange.com</a>      -o-<br>
>          <a href="http://www.flickr.com/photos/dberrange/" target="_blank">http://www.flickr.com/photos/dberrange/</a> :|<br>
>         |: <a href="http://libvirt.org" target="_blank">http://libvirt.org</a>              -o-<br>
>         <a href="http://virt-manager.org" target="_blank">http://virt-manager.org</a> :|<br>
>         |: <a href="http://autobuild.org" target="_blank">http://autobuild.org</a>       -o-<br>
>         <a href="http://search.cpan.org/~danberr/" target="_blank">http://search.cpan.org/~danberr/</a> :|<br>
>         |: <a href="http://entangle-photo.org" target="_blank">http://entangle-photo.org</a>       -o-<br>
>         <a href="http://live.gnome.org/gtk-vnc" target="_blank">http://live.gnome.org/gtk-vnc</a> :|<br>
><br>
><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
<<This happens because I choose it to happen!>> (Raistlin Majere)<br>
-----------------------------------------------------------------<br>
Dario Faggioli, Ph.D, <a href="http://about.me/dario.faggioli" target="_blank">http://about.me/dario.faggioli</a><br>
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)<br>
<br>
</font></span></blockquote></div><br></div>