[haiku-bugs] Re: [Haiku] #6817: Building m4-1.14.15 creates directories that can't be deleted.

  • From: "mmadia" <trac@xxxxxxxxxxxx>
  • Date: Sat, 05 Mar 2011 16:19:06 -0000

#6817: Building m4-1.14.15 creates directories that can't be deleted.
--------------------------------+----------------------------
   Reporter:  scottmc           |      Owner:  axeld
       Type:  bug               |     Status:  new
   Priority:  critical          |  Milestone:  R1
  Component:  File Systems/BFS  |    Version:  R1/Development
 Resolution:                    |   Keywords:
 Blocked By:                    |   Blocking:
Has a Patch:  0                 |   Platform:  All
--------------------------------+----------------------------

Comment (by mmadia):

 Seems I've filed a similar ticket with the same root issue: #7276.  Here's
 the information from that ticket.


 [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 ("conftest.dir/./"); }}} Both {{{
 <dirname>/ }}} and {{{ <dirname>/. }}} do not trigger the BFS issues
 (judging by syslog output).'''

 At one point, Urias mentioned that
 browser:haiku/trunk/src/system/kernel/fs/vfs.cpp#5807 dir_remove()

 === To reproduce ===
 {{{
 wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
 tar xvf gettext-0.18.1.1.tar.gz
 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/6817#comment:4>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: