Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Feb 2012 10:55:31 GMT
From:      Vsevolod Volkov <vvv@colocall.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/165392: Multiple mkdir/rmdir fails with errno 31
Message-ID:  <201202221055.q1MAtVW4032424@red.freebsd.org>
Resent-Message-ID: <201202221100.q1MB0Mfq027514@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         165392
>Category:       kern
>Synopsis:       Multiple mkdir/rmdir fails with errno 31
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Feb 22 11:00:22 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Vsevolod Volkov
>Release:        9.0-RELEASE amd64/i386
>Organization:
>Environment:
FreeBSD 9.0-RELEASE #0: Mon Feb 13 12:12:58 EET 2012 amd64
FreeBSD 9.0-RELEASE #1: Thu Feb  9 16:29:18 EET 2012 i386
>Description:
Multiple sequence of mkdir and rmdir causes mkdir failure with errno 31. Usualy it happens on 32765 iteration.
>How-To-Repeat:
Compile and execute the following program:

#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

int main (void)
{
  int i;
  char dir[100];
  for (i = 0; i < 50000; i++)
  {
    snprintf (dir, sizeof(dir), "empty_dir/%d", i);
    printf ("%s\n", dir);
    if (mkdir (dir, 0700) == -1)
    {
      printf ("mkdir %s: (errno %d)\n", dir, errno);
      break;
    }
    if (rmdir (dir) == -1)
    {
      printf ("rmdir %s: (errno %d)\n", dir, errno);
      break;
    }
  }
  return 0;
}

gcc -o test1 test1.c
mkdir empty_dir
./test1
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202221055.q1MAtVW4032424>