Bug#336560: vim loops forever in readlink on startup when opening symlinked file with two parent directories of the same name

Frode E. Moe frode at coretrek.com
Mon Oct 31 07:59:17 UTC 2005


Package: vim
Version: 1:6.4-001+2
Severity: normal

VIM loops forever in "readlink", according to strace, when running this script:

#!/bin/sh
cd /tmp
mkdir -p vim-bug/vim-bug/subdir
mkdir -p vim-bug/subdir
echo 'this is a file' > vim-bug/vim-bug/subdir/testfile
cd vim-bug/subdir
ln -s ../vim-bug/subdir/testfile
cd ..
echo "Pwd is:"
pwd
echo "subdir/testfile is:"
ls -l subdir/testfile
echo "Launching vim on subdir/testfile in 5 seconds"
sleep 5
vim -u NONE -U NONE subdir/testfile

I actually found this bug when I tried to open /boot/grub/menu.lst,
which is a symlink to /boot/boot/grub/menu.lst on my system.

The problem seem to only occur when both the parent directory and 
the parent's parent directory has the same name.

Output from attaching strace:
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
readlink("../vim-bug/subdir/testfile", "../vim-bug/subdir/testfile", 4096) = 26
....

Output from attaching ltrace: 
readlink(0xbff06b2c, 0xbff07b5c, 4096, 0x81999f0, 2) = 26
strcpy(0xbff06b2c, "../vim-bug/subdir/testfile") = 0xbff06b2c
readlink(0xbff06b2c, 0xbff07b5c, 4096, 0x81999f0, 2) = 26
strcpy(0xbff06b2c, "../vim-bug/subdir/testfile") = 0xbff06b2c
readlink(0xbff06b2c, 0xbff07b5c, 4096, 0x81999f0, 2) = 26
strcpy(0xbff06b2c, "../vim-bug/subdir/testfile") = 0xbff06b2c
readlink(0xbff06b2c, 0xbff07b5c, 4096, 0x81999f0, 2) = 26
strcpy(0xbff06b2c, "../vim-bug/subdir/testfile") = 0xbff06b2c
...

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.13.4
Locale: LANG=C, LC_CTYPE=no_NO.ISO8859-1 (charmap=ISO-8859-1)

Versions of packages vim depends on:
ii  libc6                        2.3.5-7     GNU C Library: Shared libraries an
ii  libgpmg1                     1.19.6-21   General Purpose Mouse - shared lib
ii  libncurses5                  5.5-1       Shared libraries for terminal hand
ii  vim-common                   1:6.4-001+2 Vi IMproved - Common files

vim recommends no packages.

-- no debconf information




More information about the pkg-vim-maintainers mailing list