On Wed, Jun 03, 2009 at 12:00:05PM +0100, Daniel P. Berrange wrote: > On Mon, Jun 01, 2009 at 10:26:38AM +0000, Frederik Himpe wrote: > > On Mon, 01 Jun 2009 10:36:36 +0100, Daniel P. Berrange wrote: > > > > > On Sat, May 30, 2009 at 12:45:21PM +0000, Frederik Himpe wrote: > > >> On Fri, 29 May 2009 19:18:05 +0200, Daniel Veillard wrote: > > >> > > >> > - test case for exercising the event loop (Daniel Berrange) > > >> > > >> I think this test is failing for me on Mandriva Cooker (both i586 and > > >> x86_64): > > > > >> What could be wrong? > > > > > > Strange, this test case works fine for me on both archs with Fedora > > > 9/10/11 and RHEL 5. > > > > > > Could you run the test manually with debugging turned on, eg > > > > > > LIBVIRT_DEBUG=1 ./eventtest > > > > > > And also try and capture an strace log with timings > > > > > > strace -ttt ./eventtest > > > > Actually I found out the test failure is not 100% reproducible. I have > > seen it failing in steps 6, 9 and IIRC also step 10 of eventtest. > > What I think is happening is that poll() is returning much sooner than > we anticipate. When you give it a timeout, it'll return upto 1 timeslice > before the timeout is due. I suspect that this is what is tripping up > the test case on Mandriva. Could you apply the following patch, and > re-build & run LIBVIRT_DEBUG=1 ./eventtest again, and also re-run with > the 'strace -ttt -f ./eventtest' (i forgot to ask for -f last time). The patch in question being this one :-) Index: qemud/event.c =================================================================== RCS file: /data/cvs/libvirt/qemud/event.c,v retrieving revision 1.23 diff -u -p -r1.23 event.c --- qemud/event.c 12 May 2009 16:43:05 -0000 1.23 +++ qemud/event.c 3 Jun 2009 10:57:04 -0000 @@ -401,7 +401,8 @@ static int virEventDispatchTimeouts(void for (i = 0 ; i < ntimeouts ; i++) { if (eventLoop.timeouts[i].deleted || eventLoop.timeouts[i].frequency < 0) continue; - + VIR_INFO("Check timeout %lld against current %lld", + eventLoop.timeouts[i].expiresAt, now); if (eventLoop.timeouts[i].expiresAt <= now) { virEventTimeoutCallback cb = eventLoop.timeouts[i].cb; int timer = eventLoop.timeouts[i].timer; Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list