[haiku-bugs] [Haiku] #7276: gettext-tools/configure from gettext-0.18.1.1 triggers BFS corruption

  • From: "mmadia" <trac@xxxxxxxxxxxx>
  • Date: Fri, 25 Feb 2011 01:03:37 -0000

#7276: gettext-tools/configure from gettext-0.18.1.1 triggers BFS corruption
---------------------------+------------------------------
 Reporter:  mmadia         |        Owner:  axeld
     Type:  bug            |       Status:  new
 Priority:  normal         |    Milestone:  R1
Component:  System/Kernel  |      Version:  R1/Development
 Keywords:                 |   Blocked By:
 Blocking:                 |  Has a Patch:  0
 Platform:  All            |
---------------------------+------------------------------
 [http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
 gettext-0.18.1.1]'s gettext-tools/configure script can reliably generate
 BFS issues, through testing "rmdir"

 The issue seems to be {{{ rmdir <dirname>/./ }}}.  Both {{{ <dirname>/ }}}
 and {{{ <dirname>/. }}} do not trigger the BFS issues (judging by syslog
 output).

 To reproduce, simply {{{ cd gettext-0.18.1.1/gettext-tools ; ./configure
 }}}


 === gettext-tools/configure snippet ===
 (line 38205)
 {{{
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether rmdir works"
 >&5
 $as_echo_n "checking whether rmdir works... " >&6; }
 if test "${gl_cv_func_rmdir_works+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
   mkdir conftest.dir
      touch conftest.file
      if test "$cross_compiling" = yes; then :
   gl_cv_func_rmdir_works="guessing no"
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
            #include <errno.h>
            #include <unistd.h>

 int
 main ()
 {
 return !rmdir ("conftest.file/") || errno != ENOTDIR
        || !rmdir ("conftest.dir/./");
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   gl_cv_func_rmdir_works=yes
 else
   gl_cv_func_rmdir_works=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi

      rm -rf conftest.dir conftest.file
 fi
 }}}


 === syslog output ===
 {{{
 KERN: bfs: Remove:1741: No such file or directory
 KERN: bfs: Could not find value in index "name"!
 KERN: bfs: Update:278: No such file or directory
 KERN: bfs: InitCheck:311: Bad data
 KERN: bfs: inode at 4728676 is already deleted!
 KERN: bfs: InitCheck:311: Bad data
 KERN: bfs: KERN: inode at 4728676 is already deleted!
 KERN: bfs: Remove:2487: Bad data
 }}}

 === checkfs ===
 {{{
 gettext-0.18.1.1/gettext-tools> checkfs -c /boot
 sub (inode = 1574266), has blocks already set
 conftest.dir (inode = 4728676), could not be opened
         51521 nodes checked,
         0 blocks not allocated,
         3 blocks already set,
         0 blocks could be freed

         files           42955
         directories     8171
         attributes      213
         attr. dirs      168
         indices         14
 }}}

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/7276>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: