X-Spam-Check-By: sourceware.org Message-ID: <46B32AD1.1010903@byu.net> Date: Fri, 03 Aug 2007 07:17:05 -0600 From: Eric Blake Reply-To: cygwin AT cygwin DOT com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070716 Thunderbird/2.0.0.5 Mnenhy/0.7.5.666 MIME-Version: 1.0 To: Daniel , cygwin AT cygwin DOT com Subject: Re: Cygwin coreutils assertion failed References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 http://cygwin.com/acronyms/#PPIOSPE - redirecting to the list. According to Daniel on 8/3/2007 12:29 AM: > Hi Eric, > > I'm running Windows XP Professional with Cygwin 2.510.2.2. No, you aren't. You loaded cygwin using setup.exe version 2.510.2.2, but cygwin itself is at version 1.5.24. Also, coreutils is now at 6.9-4, while you only have 6.9-3; you may want to consider upgrading. > I have a > > tail -n 1000 -F -s 0.1 ~/putty.log > > running all the time since many weeks. Tonight it crashed with the message: > > assertion "0 <= seconds" failed: file > "/home/eblake/coreutils-6.9-3/src/coreutils-6.9/lib/xnanosleep.c", > line 57 > bash: [3120: 1] tcsetattr: Inappropriate ioctl for device > Hangup > (129) Well, calling xnanosleep with negative time (where seconds is a variable of type double) certainly implies a bug. The question is why the time was negative. Even worse, in the source for tail, xnanosleep is called in only one place, inside a while(1) loop, with a value initialized to 0.1 outside of the loop by your choice of -s option but never assigned within the loop. It is either stack corruption (perhaps due to faulty memory), or else the double sleep value is being stored only in a register and the register is not properly being restored after some context switch. Without disassembling tail, I don't know whether the sleep_interval was stored on the stack or in a register; but since it is the only use of floating point in tail.c, I would suspect that the compiler did not need to spill it out of registers onto the stack. Either way, it does not sound like a pleasant bug, nor does it seem like something that is caused directly by coreutils. - -- Don't work too hard, make some time for fun as well! Eric Blake ebb9 AT byu DOT net -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGsyrQ84KuGfSFAYARAo0uAJ9GcNpLMEuV8tI353Kq93Ij4evSTACguokW EnKD+iOjFDJXh4GV5HEGJ1E= =D0SN -----END PGP SIGNATURE----- -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/