NetBSD Problem Report #38182

From martin@duskware.de  Thu Mar  6 09:11:47 2008
Return-Path: <martin@duskware.de>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id 8587663B88C
	for <gnats-bugs@gnats.netbsd.org>; Thu,  6 Mar 2008 09:11:47 +0000 (UTC)
Message-Id: <20080306082122.5B1A363B882@narn.NetBSD.org>
Date: Thu,  6 Mar 2008 08:21:22 +0000 (UTC)
From: rillig@NetBSD.org
Reply-To: rillig@NetBSD.org
To: netbsd-bugs-owner@NetBSD.org
Subject: fsck_msdos requires too many resources
X-Send-Pr-Version: www-1.0

>Number:         38182
>Category:       bin
>Synopsis:       fsck_msdos requires too many resources
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 06 09:15:01 +0000 2008
>Last-Modified:  Thu Mar 06 09:30:02 +0000 2008
>Originator:     Roland Illig
>Release:        NetBSD 4.99.30
>Organization:
>Environment:
NetBSD bacc.roland-illig.de 4.99.30 NetBSD 4.99.30 (GENERIC) #2: Fri Aug 31 20:40:16 CEST 2007  build@bacc.roland-illig.de:/home/scratch/build/NetBSD/2007-08/work/sys/arch/i386/compile/GENERIC i386
>Description:
When starting fsck_msdos, it allocates the memory for the FATs to compare them. I have a 110 GB MSDOS partition for which this amounts to about 1 GB of RAM being consumed. Since the swap space is usually available, this is not a problem, but when it is run during booting, it allocates the memory using the break() function, which cannot allocate that much memory at one time. I'll append the exact error message later.

>How-To-Repeat:

>Fix:
Don't load the complete FATs into memory, but compare them block-wise.

>Audit-Trail:
From: Roland Illig <rillig@NetBSD.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: bin/38182: fsck_msdos requires too many resources
Date: Thu, 06 Mar 2008 10:27:36 +0100

 This is a multi-part message in MIME format.
 --------------040900090005080902070609
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit


 --------------040900090005080902070609
 Content-Type: text/plain;
  name="kdump.out"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="kdump.out"

     36      1 ktrace   EMUL  "netbsd"
     36      1 ktrace   CALL  execve(0xbfbfea08,0xbfbfeee0,0xbfbfeeec)
     36      1 ktrace   NAMI  "/usr/bin/fsck_msdos"
     36      1 ktrace   RET   execve -1 errno 2 No such file or directory
     36      1 ktrace   CALL  execve(0xbfbfea08,0xbfbfeee0,0xbfbfeeec)
     36      1 ktrace   NAMI  "/bin/fsck_msdos"
     36      1 ktrace   RET   execve -1 errno 2 No such file or directory
     36      1 ktrace   CALL  execve(0xbfbfea08,0xbfbfeee0,0xbfbfeeec)
     36      1 ktrace   NAMI  "/usr/sbin/fsck_msdos"
     36      1 ktrace   RET   execve -1 errno 2 No such file or directory
     36      1 ktrace   CALL  execve(0xbfbfea08,0xbfbfeee0,0xbfbfeeec)
     36      1 ktrace   NAMI  "/sbin/fsck_msdos"
     36      1 ktrace   NAMI  "/libexec/ld.elf_so"
     36      1 fsck_msdos EMUL  "netbsd"
     36      1 fsck_msdos RET   execve JUSTRETURN
     36      1 fsck_msdos CALL  mmap(0,0x8000,3,0x1002,0xffffffff,0,0,0)
     36      1 fsck_msdos RET   mmap -1145266176/0xbbbca000
     36      1 fsck_msdos CALL  open(0xbbbf71be,0,8)
     36      1 fsck_msdos NAMI  "/etc/ld.so.conf"
     36      1 fsck_msdos RET   open 3
     36      1 fsck_msdos CALL  __fstat30(3,0xbfbfe9e8)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  mmap(0,0x37,1,1,3,0,0,0)
     36      1 fsck_msdos RET   mmap -1145270272/0xbbbc9000
     36      1 fsck_msdos CALL  close(3)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  munmap(0xbbbc9000,0x37)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  open(0xbfbfe7ac,0,0)
     36      1 fsck_msdos NAMI  "/lib/libutil.so.7"
     36      1 fsck_msdos RET   open 3
     36      1 fsck_msdos CALL  __fstat30(3,0xbfbfe2e4)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  mmap(0,0x1000,1,1,3,0,0,0)
     36      1 fsck_msdos RET   mmap -1145270272/0xbbbc9000
     36      1 fsck_msdos CALL  munmap(0xbbbc9000,0x1000)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  mmap(0,0x12000,5,2,3,0,0,0)
     36      1 fsck_msdos RET   mmap -1145339904/0xbbbb8000
     36      1 fsck_msdos CALL  mmap(0xbbbc7000,0x2000,3,0x12,3,0,0xe000,0)
     36      1 fsck_msdos RET   mmap -1145278464/0xbbbc7000
     36      1 fsck_msdos CALL  mmap(0xbbbc9000,0x1000,3,0x1012,0xffffffff,0,0,0)
     36      1 fsck_msdos RET   mmap -1145270272/0xbbbc9000
     36      1 fsck_msdos CALL  close(3)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  open(0xbfbfe7ac,0,0x400)
     36      1 fsck_msdos NAMI  "/lib/libc.so.12"
     36      1 fsck_msdos RET   open 3
     36      1 fsck_msdos CALL  __fstat30(3,0xbfbfe2e4)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  mmap(0,0x1000,1,1,3,0,0,0)
     36      1 fsck_msdos RET   mmap -1145344000/0xbbbb7000
     36      1 fsck_msdos CALL  munmap(0xbbbb7000,0x1000)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  mmap(0,0xe8000,5,2,3,0,0,0)
     36      1 fsck_msdos RET   mmap -1146290176/0xbbad0000
     36      1 fsck_msdos CALL  mmap(0xbbba1000,0x7000,3,0x12,3,0,0xd0000,0)
     36      1 fsck_msdos RET   mmap -1145434112/0xbbba1000
     36      1 fsck_msdos CALL  mmap(0xbbba8000,0x10000,3,0x1012,0xffffffff,0,0,0)
     36      1 fsck_msdos RET   mmap -1145405440/0xbbba8000
     36      1 fsck_msdos CALL  close(3)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  mprotect(0xbbad0000,0xd1000,7)
     36      1 fsck_msdos RET   mprotect 0
     36      1 fsck_msdos CALL  mprotect(0xbbad0000,0xd1000,5)
     36      1 fsck_msdos RET   mprotect 0
     36      1 fsck_msdos CALL  __sysctl(0xbfbfee10,2,0xbbbafd00,0xbfbfee18,0,0)
     36      1 fsck_msdos RET   __sysctl 0
     36      1 fsck_msdos CALL  __fstat30(1,0xbfbfe418)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  __sysctl(0xbfbfe374,2,0xbfbfe3cc,0xbfbfe3d0,0,0)
     36      1 fsck_msdos RET   __sysctl 0
     36      1 fsck_msdos CALL  readlink(0xbbb9a8b2,0xbfbfe408,0x3f)
     36      1 fsck_msdos NAMI  "/etc/malloc.conf"
     36      1 fsck_msdos RET   readlink -1 errno 2 No such file or directory
     36      1 fsck_msdos CALL  mmap(0,0x1000,3,0x1002,0xffffffff,0,0,0)
     36      1 fsck_msdos RET   mmap -1146294272/0xbbacf000
     36      1 fsck_msdos CALL  break(0x804fee4)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  break(0x8050ee4)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  break(0x8051000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  break(0x8061000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  ioctl(1,TIOCGETA,0xbfbfe450)
     36      1 fsck_msdos RET   ioctl 0
     36      1 fsck_msdos CALL  open(0xbfbfef67,2,0)
     36      1 fsck_msdos NAMI  "/dev/rwd0i"
     36      1 fsck_msdos RET   open 3
     36      1 fsck_msdos CALL  write(1,0x8051000,0xe)
     36      1 fsck_msdos RET   write 14/0xe
     36      1 fsck_msdos CALL  read(3,0xbfbfeb9c,0x200)
     36      1 fsck_msdos RET   read 512/0x200
     36      1 fsck_msdos CALL  lseek(3,0,0x200,0,0)
     36      1 fsck_msdos RET   lseek 512/0x200
     36      1 fsck_msdos CALL  read(3,0xbfbfe59c,0x400)
     36      1 fsck_msdos RET   read 1024/0x400
     36      1 fsck_msdos CALL  lseek(3,0,0x400,0,0)
     36      1 fsck_msdos RET   lseek 1024/0x400
     36      1 fsck_msdos CALL  read(3,0xbfbfe99c,0x200)
     36      1 fsck_msdos RET   read 512/0x200
     36      1 fsck_msdos CALL  write(1,0x8051000,0x23)
     36      1 fsck_msdos RET   write 35/0x23
     36      1 fsck_msdos CALL  break(0xed38000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  mmap(0,0x1d000,3,0x1002,0xffffffff,0,0,0)
     36      1 fsck_msdos RET   mmap -1146413056/0xbbab2000
     36      1 fsck_msdos CALL  munmap(0xbbacf000,0x1000)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  lseek(3,0,0x4000,0,0)
     36      1 fsck_msdos RET   lseek 16384/0x4000
     36      1 fsck_msdos CALL  read(3,0x8061000,0x6cd6800)
     36      1 fsck_msdos RET   read 114124800/0x6cd6800
     36      1 fsck_msdos CALL  break(0x2a092000)
     36      1 fsck_msdos RET   break -1 errno 12 Cannot allocate memory
     36      1 fsck_msdos CALL  issetugid
     36      1 fsck_msdos RET   issetugid 0
     36      1 fsck_msdos CALL  issetugid
     36      1 fsck_msdos RET   issetugid 0
     36      1 fsck_msdos CALL  break(0xed39000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  open(0xbfbfdfd8,0,0xbfbfdf44)
     36      1 fsck_msdos NAMI  "/usr/share/nls/nls.alias.db"
     36      1 fsck_msdos RET   open -1 errno 2 No such file or directory
     36      1 fsck_msdos CALL  open(0xbbb9ebaf,0,0xbfbfdfa8)
     36      1 fsck_msdos NAMI  "/usr/share/nls/nls.alias"
     36      1 fsck_msdos RET   open 4
     36      1 fsck_msdos CALL  fcntl(4,2,1)
     36      1 fsck_msdos RET   fcntl 0
     36      1 fsck_msdos CALL  __fstat30(4,0xbfbfdf38)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  mmap(0,0x5f0,1,2,4,0,0,0)
     36      1 fsck_msdos RET   mmap -1146294272/0xbbacf000
     36      1 fsck_msdos CALL  close(4)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  break(0xed3a000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  munmap(0xbbacf000,0x5f0)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  open(0xbfbfe457,0,0xbfbfe3c8)
     36      1 fsck_msdos NAMI  "/usr/share/nls/C/libc.cat"
     36      1 fsck_msdos RET   open 4
     36      1 fsck_msdos CALL  __fstat30(4,0xbfbfe3c8)
     36      1 fsck_msdos RET   __fstat30 0
     36      1 fsck_msdos CALL  mmap(0,0x10be,1,1,4,0,0,0)
     36      1 fsck_msdos RET   mmap -1146421248/0xbbab0000
     36      1 fsck_msdos CALL  close(4)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  munmap(0xbbab0000,0x10be)
     36      1 fsck_msdos RET   munmap 0
     36      1 fsck_msdos CALL  break(0xed3a000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  break(0x8071000)
     36      1 fsck_msdos RET   break 0
     36      1 fsck_msdos CALL  close(3)
     36      1 fsck_msdos RET   close 0
     36      1 fsck_msdos CALL  write(1,0x8051000,0x3e)
     36      1 fsck_msdos RET   write 62/0x3e
     36      1 fsck_msdos CALL  exit(8)

 --------------040900090005080902070609--

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.