bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mysterious tar-1.13.23 extraction failure


From: Bruno Haible
Subject: mysterious tar-1.13.23 extraction failure
Date: Mon, 12 Nov 2001 13:22:33 +0100 (CET)

When unpacking screen-3.9.8.tar.gz
(ftp://ftp.gnu.org/pub/gnu/screen/screen-3.9.8.tar.gz, 505018 bytes)
with tar-1.3.23 on a glibc-2.2.4 Linux system, on an ext2fs partition,
I get a strange error message:

$ tar xfz /gnu/screen-3.9.8.tar.gz
tar: screen-3.9.8: Directory renamed before its status could be extracted
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.

Or once again with verbosity.

$ rm -rf screen-3.9.8
$ tar xvvfz /gnu/screen-3.9.8.tar.gz
drwxrwxr-x mlschroe/i4staff  0 2000-09-01 18:07:29 screen-3.9.8/
...
lrwxrwxrwx mlschroe/i4staff      0 2000-09-01 18:07:28 
screen-3.9.8/doc/install.sh -> ../install.sh
lrwxrwxrwx mlschroe/i4staff      0 2000-09-01 18:07:29 screen-3.9.8/FAQ -> 
doc/FAQ
-rw-rw-r-- mlschroe/i4staff     70 2000-09-01 18:07:29 screen-3.9.8/Makefile
tar: screen-3.9.8: Directory renamed before its status could be extracted
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.

There is no "renaming" going on, the error is reproducible.
I cannot see anything wrong with the tarfile.
The only unusual thing is that it contains two symbolic links.

When I put a breakpoint at extract.c:576 (this is where the error message
comes from) I see

(gdb) break extract.c:576
Breakpoint 1 at 0x8051c73: file ../../src/extract.c, line 576.
(gdb) run xf /tmp/screen-3.9.8.tar 
Starting program: /packages/gnu/bin/tar xf /tmp/screen-3.9.8.tar
[New Thread 1024 (LWP 15649)]
[Switching to Thread 1024 (LWP 15649)]

Breakpoint 1, apply_nonancestor_delayed_set_stat (file_name=0x80624f4 "", 
after_symlinks=true)
    at ../../src/extract.c:576
576                   ERROR ((0, 0,
(gdb) print st
$1 = {st_dev = 775, __pad1 = 0, __st_ino = 65400, st_mode = 16877, st_nlink = 
5, st_uid = 101, 
  st_gid = 100, st_rdev = 6912, __pad2 = 0, st_size = 4096, st_blksize = 4096, 
st_blocks = 8, 
  st_atime = 1005430112, __unused1 = 0, st_mtime = 1005430112, __unused2 = 0, 
st_ctime = 1005430112, 
  __unused3 = 0, st_ino = 65400}
(gdb) print *data
$2 = {next = 0x0, stat_info = {st_dev = 0, __pad1 = 0, __st_ino = 0, st_mode = 
509, st_nlink = 0, 
    st_uid = 10415, st_gid = 10430, st_rdev = 0, __pad2 = 0, st_size = 0, 
st_blksize = 0, st_blocks = 0, 
    st_atime = 0, __unused1 = 0, st_mtime = 967824449, __unused2 = 0, st_ctime 
= 0, __unused3 = 0, 
    st_ino = 0}, file_name_len = 12, invert_permissions = 0, permstatus = 
ARCHIVED_PERMSTATUS, 
  after_symlinks = false, file_name = "s"}
(gdb) print (char*)data->file_name
$3 = 0x8082bb4 "screen-3.9.8"

i.e. data->stat_info.st_dev and data->stat_info.st_ino are both 0.

Bruno



reply via email to

[Prev in Thread] Current Thread [Next in Thread]