From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16204 invoked by alias); 10 Feb 2006 17:24:25 -0000 Received: (qmail 16196 invoked by uid 22791); 10 Feb 2006 17:24:24 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Fri, 10 Feb 2006 17:24:22 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1F7c0K-0007Dt-9a; Fri, 10 Feb 2006 12:24:20 -0500 Date: Fri, 10 Feb 2006 17:24:00 -0000 From: Daniel Jacobowitz To: David Lecomber Cc: gdb Subject: Re: Whacky ia64: linux_proc_xfer_partial and lseek vs pread64 Message-ID: <20060210172420.GA27670@nevyn.them.org> Mail-Followup-To: David Lecomber , gdb References: <1139591736.3780.26.camel@cpc2-oxfd8-0-0-cust771.oxfd.cable.ntl.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1139591736.3780.26.camel@cpc2-oxfd8-0-0-cust771.oxfd.cable.ntl.com> User-Agent: Mutt/1.5.8i X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-02/txt/msg00085.txt.bz2 On Fri, Feb 10, 2006 at 05:15:36PM +0000, David Lecomber wrote: > Dear Dan and all, > > It's great that these days we use file access to get at the memory via > the /proc filesystem - but there's an interesting sighting on the ia64 > (suse 9) in linux_proc_xfer_partial. > > #ifdef HAVE_PREAD64 > if (pread64 (fd, readbuf, len, offset) != len) > #else > if (lseek (fd, offset, SEEK_SET) == -1 || read (fd, readbuf, len) != > len) > #endif > ret = 0; > else > ret = len; > > > So, Mr Itanium has pread64, it calls pread64.. it seems to fail > regularly.. As the strace log shows. > open("/proc/21785/mem", O_RDONLY) = 4 > pread(4, 0x60000fffffffa040, 64, 11529215046068469760) = -1 EINVAL > (Invalid argument) > close(4) = 0 Are there any warnings when compiling this file? Is the prototype for pread64 not in scope, maybe? Failing that, put a breakpoint at *pread64 and make sure the arguments in registers are really sane. But I doubt it's either of those; the values look reasonable. That offset is $1 = 0xa000000000000000. Maybe the kernel is rejecting that for pread because it thinks it's unacceptable for some reason. > Anyone any idea what's going on? I'd be happy to let someone else > formulate the rather obvious patch, as I don't know the behaviour on > other platforms. The code appears to be fine and your pread appears to be busted, unfortunately. -- Daniel Jacobowitz CodeSourcery