[Top][All Lists]

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

hard link bug in libtool

From: Mark Nejedlo
Subject: hard link bug in libtool
Date: Wed, 18 Dec 2002 10:14:06 -0600 (CST)

There is a problem in libtool regarding using hard links for locking.  If 
there is a mount point in between the lock file location and the location 
of the libtool script (unlikely, but possible), the attempt to create a 
hard link will fail, causing an infinite loop waiting for the link to be 
created.  The problem is more severe when libtool is being used in AFS 
because every subdirectory in AFS is treated as a mount point with respect 
to hard links.  Since libtool apparently already checks if it should use 
symlinks by setting the variable LN_S, the patch to fix should be a 
trivial change in ltmain.in, included below as a diff -u5 against 1.4.2, 
which is what I have handy.  According to address@hidden the problem 
still exists in the libtool CVS tree.  Also below is the text of my bug 
report to lyx, which is where I first noticed the bug.  It may have 
additional useful information.  Thanks

diff -u5 ltmain.in ~/ltmain.in
--- ltmain.in   Wed Oct 24 15:34:16 2001
+++ /home/nejedlo/ltmain.in     Wed Dec 18 10:06:50 2002
@@ -485,11 +485,11 @@
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new 
     if test "$need_locks" = yes; then
-      until $run ln "$0" "$lockfile" 2>/dev/null; do
+      until $run $LN_S "$0" "$lockfile" 2>/dev/null; do
        $show "Waiting for $lockfile to be removed"
        sleep 2
     elif test "$need_locks" = warn; then
       if test -f "$lockfile"; then


           Summary: libtool locks will never work in AFS
           Product: LyX
           Version: 1.2.1
          Platform: PC
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: minor
          Priority: P2
         Component: build
        AssignedTo: address@hidden
        ReportedBy: address@hidden
         QAContact: address@hidden

I am attempting to compile lyx 1.2.1 in AFS, and the make process enters 
an infinite loop when trying to compile src/mathed/textpainter.C with the 
error message "Waiting for textpainter.o.lock to be removed".  I deleted 
the error redirection of the ln line (approx. line 773, "until $run ln 
\"$0\" \"$lockfile\" 2>/dev/null; do") in the libtool at the root of the 
source tree and got the error message "ln: creating hard link 
`textpainter.o.lock' to `../../libtool': Invalid cross-device link".  
Because of how AFS works, it is not possible to create hard links between 
files in separate directories, this is the error that occurs when you try.  
I changed the "ln" to "ln -s" and it seems to work fine.  Interestingly, 
when looking through libtool, I found the lines:

# Whether we need hard or soft links.
LN_S="ln -s"

at about line 75.  This was on a host running RedHat 7.3 and OpenAFS 

Mark Nejedlo            address@hidden
2328 Sterling Hall      (608) 262-7578
1150 University Avenue
Madison, WI 53706-1390

reply via email to

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