bug-hurd
[Top][All Lists]
Advanced

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

Bug#98071: symlink to itself hangs


From: Marcus Brinkmann
Subject: Bug#98071: symlink to itself hangs
Date: Sun, 20 May 2001 02:36:04 +0200
User-agent: Mutt/1.2i

Package: hurd

Hi,

the following doesn't return:

$ cd /tmp
$ ln -s /tmp/x x
$ ls x

The variant "ln -s x x" does not show such errornous behaviour.
Filesystem is ext2fs. It is sufficient to do "ls".

Here is a backtrace:

Script started on Sun May 20 02:23:35 2001
marcus@ulysses:/tmp$ gdb /b bin/ls 17841
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-gnu0.2"...
(no debugging symbols found)...
/tmp/17841: No such file or directory.
Attaching to program `/bin/ls', pid 17841
Reading symbols from /lib/debug/libc.so.0.2...done.
Loaded symbols for /lib/debug/libc.so.0.2
Reading symbols from /lib/ld.so...done.
Loaded symbols for /lib/ld.so
Reading symbols from /lib/debug/libmachuser.so.1...done.
Loaded symbols for /lib/debug/libmachuser.so.1
Reading symbols from /lib/debug/libhurduser.so.0.0...done.
Loaded symbols for /lib/debug/libhurduser.so.0.0
[Switching to thread 17841.1]
(gdb) bt full
#0  0x105af11 in _hurd_intr_rpc_msg_in_trap () at intr-msg.c:118
        err = 0
        ss = (struct hurd_sigstate *) 0x11aa808
        user_option = 3
        user_timeout = 0
        m = (union msg *) 0x1020c28
        msgh_bits = 5395
        remote_port = 22
        msgid = 20018
        save_data = {i = {335546380, 795897204}}
#1  0x119bfbb in __dir_lookup (start_dir=22, file_name=0x102165d "tmp/x", 
    flags=0, mode=0, do_retry=0x1021610, retry_name=0x102165c "/tmp/x", 
    result=0x1021a98)
    at 
/mnt/marcus/gnu/hurd/glibc/glibc-2.2.2/i386-gnu/obj/hurd/RPC_dir_lookup.c:183
        flags = 0
        do_retry = (retry_type *) 0x11aa808
        result = (mach_port_t *) 0x0
        Mess = {In = {Head = {msgh_bits = 2147488256, msgh_size = 1076, 
      msgh_remote_port = 0, msgh_local_port = 43, msgh_seqno = 241946, 
      msgh_id = 20118}, file_nameType = {msgt_name = 2, msgt_size = 32, 
      msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, 
    file_name = "\000\000\000\000\002 
\001\020\003\000\000\000\f\b\000\024/tmp/x---Type <return> to continue, or q 
<return> to quit---
", '\000' <repeats 1001 times>, flagsType = {msgt_name = 2, msgt_size = 32, 
      msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, flags = 0, modeType = {
      msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, 
      msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, mode = 0}, 
  Out = {Head = {msgh_bits = 2147488256, msgh_size = 1076, 
      msgh_remote_port = 0, msgh_local_port = 43, msgh_seqno = 241946, 
      msgh_id = 20118}, RetCodeType = {msgt_name = 2, msgt_size = 32, 
      msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, RetCode = 0, do_retryType = {
      msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, 
      msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, 
    do_retry = FS_RETRY_MAGICAL, retry_nameType = {msgt_name = 12, 
      msgt_size = 8, msgt_number = 1024, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, 
    retry_name = "/tmp/x", '\000' <repeats 1002 times>, "\002 
\001\020\000\000\000\000\002 \001\020\000\000\000", resultType = {msgt_name = 
17, 
      msgt_size = 32, msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, result = 0}}
        OutP = (Reply *) 0x1020c28
        msg_result = 0
        msgh_simple = 0
        msgh_size = 18524168
        file_nameType = {msgt_name = 12, msgt_size = 8, msgt_number = 1024, 
---Type <return> to continue, or q <return> to quit---
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        flagsType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        modeType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        RetCodeCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        do_retryCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        retry_nameCheck = {msgt_name = 12, msgt_size = 8, msgt_number = 1024, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        resultCheck = {msgt_name = 17, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
#2  0x1047b18 in lookup_op (startdir=22) at hurdlookup.c:128
        error = 0
#3  0x1046b74 in _hurd_ports_use (which=1, operate=0x1021150) at hurdinit.c:42
        port = (struct hurd_port *) 0x11a9f94
        __p = (struct hurd_port *) 0x11a9f94
        __link = {resource = {next = 0x0, prevp = 0x11a9f98}, thread = {
    next = 0x0, prevp = 0x11aac5c}, cleanup = 0x1065f3c <_hurd_port_cleanup>, 
  cleanup_data = 0x16}
        __result = 0
        which = 0
#4  0x104830f in __hurd_file_name_lookup_retry (
---Type <return> to continue, or q <return> to quit---
    use_init_port=0x10469a0 <_hurd_ports_use>, 
    get_dtable_port=0x105e1e0 <__getdport>, lookup=0x119bf10 <__dir_lookup>, 
    doretry=FS_RETRY_MAGICAL, retryname=0x102165c "/tmp/x", flags=0, mode=0, 
    result=0x1021a98) at hurdlookup.c:376
        startdir = 0
        dirport = 1
        err = 0
        file_name = 0x102165d "tmp/x"
        nloops = 0
#5  0x1047ab6 in __hurd_file_name_lookup (
    use_init_port=0x10469a0 <_hurd_ports_use>, 
    get_dtable_port=0x105e1e0 <__getdport>, lookup=0x119bf10 <__dir_lookup>, 
    file_name=0x80578e1 "tmp/x", flags=0, mode=0, result=0x1021a98)
    at hurdlookup.c:97
        err = 0
        doretry = FS_RETRY_MAGICAL
        retryname = "/tmp/x", '\000' <repeats 1017 times>
        startport = 1
#6  0x10485e9 in __file_name_lookup (file_name=0x80578e0 "/tmp/x", flags=0, 
    mode=0) at hurdlookup.c:514
        err = 0
        result = 0
#7  0x1105be0 in __xstat (vers=0, file=0x80578e0 "/tmp/x", buf=0x1021b1c)
    at ../sysdeps/mach/hurd/xstat.c:34
---Type <return> to continue, or q <return> to quit---
        err = EKERN_PROTECTION_FAILURE
        port = 16915228
#8  0x804b0e2 in strcpy () at ../sysdeps/generic/strcpy.c:31
No symbol table info available.
#9  0x8049822 in strcpy () at ../sysdeps/generic/strcpy.c:31
No symbol table info available.
#10 0x1067720 in __libc_start_main (main=0x8049658 <strcpy+480>, argc=2, 
    ubp_av=0x1021c30, 
    init=0x8049020 <_hurdsig_fault_exc_server_routines+116003704>, 
    fini=0x804f83c <__umoddi3+460>, rtld_fini=0xe6a0 <_dl_fini>, 
    stack_end=0x1021c2c) at ../sysdeps/generic/libc-start.c:129
        fini = (void (*)()) 0x1021b1c
        rtld_fini = (void (*)()) 0x1020b94
        ubp_ev = (char **) 0x0
(gdb) quit
The program is running.  Quit anyway (and detach it)? (y or n) y
Detaching from program `/bin/ls' pid 17841
marcus@ulysses:/tmp$ exit

Script done on Sun May 20 02:24:02 2001





reply via email to

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