Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perl 5.16.1 hangs on ./Configure on Debian in nfs file system #12507

Closed
p5pRT opened this issue Oct 22, 2012 · 11 comments
Closed

Perl 5.16.1 hangs on ./Configure on Debian in nfs file system #12507

p5pRT opened this issue Oct 22, 2012 · 11 comments

Comments

@p5pRT
Copy link

p5pRT commented Oct 22, 2012

Migrated from rt.perl.org#115416 (status was 'resolved')

Searchable as RT115416$

@p5pRT
Copy link
Author

p5pRT commented Oct 22, 2012

From francis.nguyen@oicr.on.ca

Created by francis.nguyen@oicr.on.ca

I am installing the latest version of perl (5.16.1) onto an nfs filesystem.
I downloaded the .tar.gz from www.perl.org and unzipped it into an nfs filesystem.
I then ran the command ./Configure -des -Dprefix=/.mounts/labs/private/Software/Perl-BL/. (The choice of prefix does not seem to matter)
The configure runs as normal until hanging after printing 'fcntl() found.'
I tried debugging the issue and the problem seems to be the file UU/try inside of the perl directory, which hangs when run.
The install process works fine if I install it anywhere else.
The install process also works fine from my Ubuntu machine.

Steps to reproduce​:
1) Download the .tar.gz from www.perl.org
2) Unzip onto an nfs filesystem.
3) Run ./Configure -des from Debian

Perl Info

Flags:
    category=install
    severity=medium

Site configuration information for perl 5.10.0:

Configured by Debian Project at Mon Jan 17 08:54:23 UTC 2011.

Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
  Platform:
    osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-gnu-thread-multi
    uname='linux madeleine 2.6.32-5-amd64 #1 smp fri dec 10 15:35:08 utc 2010 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.0 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.3.2', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.7.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0
    gnulibc_version='2.7'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.10.0:
    /etc/perl
    /usr/local/lib/perl/5.10.0
    /usr/local/share/perl/5.10.0
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.10
    /usr/share/perl/5.10
    /usr/local/lib/site_perl
    .


Environment for perl 5.10.0:
    HOME=/u/blabuser
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2012

From @doughera88

On Mon, 22 Oct 2012, Francis Nguyen wrote​:

# New Ticket Created by Francis Nguyen
# Please include the string​: [perl #115416]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=115416 >

This is a bug report for perl from francis.nguyen@​oicr.on.ca,
generated with the help of perlbug 1.36 running under perl 5.10.0.

-----------------------------------------------------------------
[Please enter your report here]

I am installing the latest version of perl (5.16.1) onto an nfs filesystem.
I downloaded the .tar.gz from www.perl.org and unzipped it into an nfs filesystem.
I then ran the command ./Configure -des -Dprefix=/.mounts/labs/private/Software/Perl-BL/. (The choice of prefix does not seem to matter)
The configure runs as normal until hanging after printing 'fcntl() found.'
I tried debugging the issue and the problem seems to be the file UU/try inside of the perl directory, which hangs when run.
The install process works fine if I install it anywhere else.
The install process also works fine from my Ubuntu machine.

Steps to reproduce​:
1) Download the .tar.gz from www.perl.org
2) Unzip onto an nfs filesystem.
3) Run ./Configure -des from Debian

Configure definitely shouldn't hang, but I am unable to reproduce this
problem. I have been building perl on an NFS filesystem from Debian for
many years without this problem, so I'm going to have to rely on you for
debugging.

If I had to guess, I'd guess your nfs client or server is having problems
with file locking, but I can't be sure without further information. It
might be that stopping and restarting the NFS daemons clears it all up.
If not, here's what I suggest trying next​:

First, could please re-run Configure without the -s option? The -s option
("silent") is throwing away information that will tell us which test is
hanging.

Next, if it hangs after printing "Checking if fcntl-based file locking
works..." then it is hanging in the file locking test. Try
compiling and running the following C program​:

/* Start of program */
#define I_STDLIB
#ifdef I_STDLIB
#include <stdlib.h>
#endif
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
void blech(int x) { exit(3); }
int main() {
#if defined(F_SETLK) && defined(F_SETLKW)
  struct flock flock;
  int retval, fd;
  fd = open("try.c", O_RDONLY);
  flock.l_type = F_RDLCK;
  flock.l_whence = SEEK_SET;
  flock.l_start = flock.l_len = 0;
  signal(SIGALRM, blech);
  alarm(10);
  retval = fcntl(fd, F_SETLK, &flock);
  close(fd);
  (retval < 0 ? exit(2) : exit(0));
#else
  exit(2);
#endif
}

/* end of program */

Even if the fcntl() call fails, this program is supposed to time out after
10 seconds, so I'm very puzzled as to how it's hanging. If this program
hangs, can you re-run it under gdb and verify that it's hanging on the
fcntl() call?

Also helpful for debugging/reproducing this would be more information
about the exact set-up​:

  1. uname -a output on the Debian client (The info in the original
  perlbug report is from an older version of perl, so I don't know
  if it's relevant or not.)
  2. NFS versions on client and server (e.g. dpkg --status nfs-common)
  on a debian client; whatever is approproate on the server)
  3. Listing of any nfs mount options.
  4. Compiler & libc versions being used.

Thanks,

--
  Andy Dougherty doughera@​lafayette.edu

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2012

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2012

From francis.nguyen@oicr.on.ca

(Sorry if this is a doublepost, but the message I sent to perlbug-followup@​perl.org isn't showing up on https://rt-archive.perl.org/perl5/Public/Bug/Display.html?id=115416)

Thank you very much for the quick response.

The problem resolved itself this morning (post-restart) but then suddenly began giving the same problem again about an hour ago. After re-running configure without -s, I can confirm that it hangs after printing "Checking if fcntl-based file locking works...".

I compiled and ran the C program (which is identical to try.c in the UU directory), and used gdb to figure out what was going on. The following is the output​:
fnguyen@​clusterbuild​:~/boutroslab/tmp/Testing/WeHaveToGoDeeper$ ../../gdb/bin/gdb test
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+​: GNU GPL version 3 or later <http​://gnu.org/licenses/gpl.html>
This is free software​: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see​:
<http​://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /oicr/x86_64/boutroslab/tmp/Testing/WeHaveToGoDeeper/test...done.
(gdb) b 19
Breakpoint 1 at 0x4006ab​: file test.c, line 19.
(gdb) b 20
Breakpoint 2 at 0x4006b5​: file test.c, line 20.
(gdb) b 21
Breakpoint 3 at 0x4006ce​: file test.c, line 21.
(gdb) run
Starting program​: /oicr/x86_64/boutroslab/tmp/Testing/WeHaveToGoDeeper/test

Breakpoint 1, main () at test.c​:19
19 alarm(10);
(gdb) step

Breakpoint 2, main () at test.c​:20
20 retval = fcntl(fd, F_SETLK, &flock);
(gdb) step

At this point, the process hung, and could be viewed as being in uninterruptable sleep (D) under top.

More information​:
1) blabuser@​clusterbuild​:/.mounts/labs/boutroslab/private/users/blabuser/perl-5.16.1$ uname -a
Linux clusterbuild 2.6.32-bpo.5-amd64 #1 SMP Mon Jan 17 18​:24​:45 UTC 2011 x86_64 GNU/Linux
( This is Debian Lenny )

2) blabuser@​clusterbuild​:/.mounts/labs/boutroslab/private/users/blabuser/perl-5.16.1$ dpkg --status nfs-common
Package​: nfs-common
Status​: install ok installed
Priority​: standard
Section​: net
Installed-Size​: 464
Maintainer​: Debian kernel team <debian-kernel@​lists.debian.org>
Architecture​: amd64
Source​: nfs-utils
Version​: 1​:1.1.2-6lenny2
Replaces​: mount (<< 2.13~), nfs-client, nfs-kernel-server (<< 1​:1.0.7-5)
Provides​: nfs-client
Depends​: portmap | rpcbind, adduser, ucf, lsb-base (>= 1.3-9ubuntu3), netbase (>= 4.24), initscripts (>= 2.86.ds1-38.1), libc6 (>= 2.7-1), libcomerr2 (>= 1.01), libevent1 (>= 1.3e), libgssglue1, libkrb53 (>= 1.6.dfsg.2), libnfsidmap2, librpcsecgss3, libwrap0 (>= 7.6-4~)
Conflicts​: nfs-client
Conffiles​:
/etc/init.d/nfs-common 2a8ec2053cd94daa29f2c8644c268dd4
Description​: NFS support files common to client and server
Use this package on any machine that uses NFS, either as client or
server. Programs included​: lockd, statd, showmount, nfsstat, gssd
and idmapd.
.
Upstream​: SourceForge project "nfs", CVS module nfs-utils.
Homepage​: http​://nfs.sourceforge.net/

3) Unsure. I'm not an administrator, but I will get in contact with IT to tell you this.

4) As far as I know, the information in the perlbug report (gcc version 4.3.2, libc version 2.7) is correct.
blabuser@​clusterbuild​:~$ gcc -v
Using built-in specs.
Target​: x86_64-linux-gnu
Configured with​: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1' --with-bugurl=file​:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-cld --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model​: posix
gcc version 4.3.2 (Debian 4.3.2-1.1)

Thanks,

Francis Nguyen

Student

Ontario Institute for Cancer Research
MaRS Centre, South Tower
101 College Street, Suite 800
Toronto, Ontario, Canada M5G 0A3

Toll-free​: 1-866-678-6427
www.oicr.on.ca

This message and any attachments may contain confidential and/or privileged information for the sole use of the intended recipient. Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. If you have received this message in error, please contact the sender and delete all copies. Opinions, conclusions or other information contained in this message may not be that of the organization.

________________________________________
From​: Andy Dougherty via RT [perlbug-followup@​perl.org]
Sent​: October 24, 2012 8​:07 AM
To​: Francis Nguyen
Subject​: Re​: [perl #115416] Perl 5.16.1 hangs on ./Configure on Debian in nfs file system

On Mon, 22 Oct 2012, Francis Nguyen wrote​:

# New Ticket Created by Francis Nguyen
# Please include the string​: [perl #115416]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=115416 >

This is a bug report for perl from francis.nguyen@​oicr.on.ca,
generated with the help of perlbug 1.36 running under perl 5.10.0.

-----------------------------------------------------------------
[Please enter your report here]

I am installing the latest version of perl (5.16.1) onto an nfs filesystem.
I downloaded the .tar.gz from www.perl.org and unzipped it into an nfs filesystem.
I then ran the command ./Configure -des -Dprefix=/.mounts/labs/private/Software/Perl-BL/. (The choice of prefix does not seem to matter)
The configure runs as normal until hanging after printing 'fcntl() found.'
I tried debugging the issue and the problem seems to be the file UU/try inside of the perl directory, which hangs when run.
The install process works fine if I install it anywhere else.
The install process also works fine from my Ubuntu machine.

Steps to reproduce​:
1) Download the .tar.gz from www.perl.org
2) Unzip onto an nfs filesystem.
3) Run ./Configure -des from Debian

Configure definitely shouldn't hang, but I am unable to reproduce this
problem. I have been building perl on an NFS filesystem from Debian for
many years without this problem, so I'm going to have to rely on you for
debugging.

If I had to guess, I'd guess your nfs client or server is having problems
with file locking, but I can't be sure without further information. It
might be that stopping and restarting the NFS daemons clears it all up.
If not, here's what I suggest trying next​:

First, could please re-run Configure without the -s option? The -s option
("silent") is throwing away information that will tell us which test is
hanging.

Next, if it hangs after printing "Checking if fcntl-based file locking
works..." then it is hanging in the file locking test. Try
compiling and running the following C program​:

/* Start of program */
#define I_STDLIB
#ifdef I_STDLIB
#include <stdlib.h>
#endif
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
void blech(int x) { exit(3); }
int main() {
#if defined(F_SETLK) && defined(F_SETLKW)
  struct flock flock;
  int retval, fd;
  fd = open("try.c", O_RDONLY);
  flock.l_type = F_RDLCK;
  flock.l_whence = SEEK_SET;
  flock.l_start = flock.l_len = 0;
  signal(SIGALRM, blech);
  alarm(10);
  retval = fcntl(fd, F_SETLK, &flock);
  close(fd);
  (retval < 0 ? exit(2) : exit(0));
#else
  exit(2);
#endif
}

/* end of program */

Even if the fcntl() call fails, this program is supposed to time out after
10 seconds, so I'm very puzzled as to how it's hanging. If this program
hangs, can you re-run it under gdb and verify that it's hanging on the
fcntl() call?

Also helpful for debugging/reproducing this would be more information
about the exact set-up​:

  1. uname -a output on the Debian client (The info in the original
  perlbug report is from an older version of perl, so I don't know
  if it's relevant or not.)
  2. NFS versions on client and server (e.g. dpkg --status nfs-common)
  on a debian client; whatever is approproate on the server)
  3. Listing of any nfs mount options.
  4. Compiler & libc versions being used.

Thanks,

--
  Andy Dougherty doughera@​lafayette.edu

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2012

From francis.nguyen@oicr.on.ca

Ah -- the only reason it was working this morning was because I didn't have try.c in the same directory as that script. I've run a couple tests with the code you sent and figured out something interesting​: the fcntl() call will run for 10 seconds like you said, but can still be ctrl+C'd out of. When the alarm hits after 10 seconds, the process becomes unresponsive to any sort of kill. Nonetheless, this does seem to be more of an issue on our side, and I will talk this over with our IT to try and resolve this issue.

Thank you very much for your assistance,

Francis Nguyen

Student

@p5pRT
Copy link
Author

p5pRT commented Oct 24, 2012

From francis.nguyen@oicr.on.ca

Thank you very much for the quick response.

The problem resolved itself this morning (post-restart) but then suddenly began giving the same problem again about an hour ago. After re-running configure without -s, I can confirm that it hangs after printing "Checking if fcntl-based file locking works...".

I compiled and ran the C program (which is identical to try.c in the UU directory), and used gdb to figure out what was going on. The following is the output​:
fnguyen@​clusterbuild​:~/boutroslab/tmp/Testing/WeHaveToGoDeeper$ ../../gdb/bin/gdb test
GNU gdb (GDB) 7.5
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+​: GNU GPL version 3 or later <http​://gnu.org/licenses/gpl.html>
This is free software​: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see​:
<http​://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /oicr/x86_64/boutroslab/tmp/Testing/WeHaveToGoDeeper/test...done.
(gdb) b 19
Breakpoint 1 at 0x4006ab​: file test.c, line 19.
(gdb) b 20
Breakpoint 2 at 0x4006b5​: file test.c, line 20.
(gdb) b 21
Breakpoint 3 at 0x4006ce​: file test.c, line 21.
(gdb) run
Starting program​: /oicr/x86_64/boutroslab/tmp/Testing/WeHaveToGoDeeper/test

Breakpoint 1, main () at test.c​:19
19 alarm(10);
(gdb) step

Breakpoint 2, main () at test.c​:20
20 retval = fcntl(fd, F_SETLK, &flock);
(gdb) step

At this point, the process hung, and could be viewed as being in uninterruptable sleep (D) under top.

More information​:
1) blabuser@​clusterbuild​:/.mounts/labs/boutroslab/private/users/blabuser/perl-5.16.1$ uname -a
Linux clusterbuild 2.6.32-bpo.5-amd64 #1 SMP Mon Jan 17 18​:24​:45 UTC 2011 x86_64 GNU/Linux
( This is Debian Lenny )

2) blabuser@​clusterbuild​:/.mounts/labs/boutroslab/private/users/blabuser/perl-5.16.1$ dpkg --status nfs-common
Package​: nfs-common
Status​: install ok installed
Priority​: standard
Section​: net
Installed-Size​: 464
Maintainer​: Debian kernel team <debian-kernel@​lists.debian.org>
Architecture​: amd64
Source​: nfs-utils
Version​: 1​:1.1.2-6lenny2
Replaces​: mount (<< 2.13~), nfs-client, nfs-kernel-server (<< 1​:1.0.7-5)
Provides​: nfs-client
Depends​: portmap | rpcbind, adduser, ucf, lsb-base (>= 1.3-9ubuntu3), netbase (>= 4.24), initscripts (>= 2.86.ds1-38.1), libc6 (>= 2.7-1), libcomerr2 (>= 1.01), libevent1 (>= 1.3e), libgssglue1, libkrb53 (>= 1.6.dfsg.2), libnfsidmap2, librpcsecgss3, libwrap0 (>= 7.6-4~)
Conflicts​: nfs-client
Conffiles​:
/etc/init.d/nfs-common 2a8ec2053cd94daa29f2c8644c268dd4
Description​: NFS support files common to client and server
Use this package on any machine that uses NFS, either as client or
server. Programs included​: lockd, statd, showmount, nfsstat, gssd
and idmapd.
.
Upstream​: SourceForge project "nfs", CVS module nfs-utils.
Homepage​: http​://nfs.sourceforge.net/

3) Unsure. I'm not an administrator, but I will get in contact with IT to tell you this.

4) As far as I know, the information in the perlbug report (gcc version 4.3.2, libc version 2.7) is correct.
blabuser@​clusterbuild​:~$ gcc -v
Using built-in specs.
Target​: x86_64-linux-gnu
Configured with​: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1' --with-bugurl=file​:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-cld --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model​: posix
gcc version 4.3.2 (Debian 4.3.2-1.1)

Thanks,

Francis Nguyen

Student

Ontario Institute for Cancer Research
MaRS Centre, South Tower
101 College Street, Suite 800
Toronto, Ontario, Canada M5G 0A3

Toll-free​: 1-866-678-6427
www.oicr.on.ca

This message and any attachments may contain confidential and/or privileged information for the sole use of the intended recipient. Any review or distribution by anyone other than the person for whom it was originally intended is strictly prohibited. If you have received this message in error, please contact the sender and delete all copies. Opinions, conclusions or other information contained in this message may not be that of the organization.

________________________________________
From​: Andy Dougherty via RT [perlbug-followup@​perl.org]
Sent​: October 24, 2012 8​:07 AM
To​: Francis Nguyen
Subject​: Re​: [perl #115416] Perl 5.16.1 hangs on ./Configure on Debian in nfs file system

On Mon, 22 Oct 2012, Francis Nguyen wrote​:

# New Ticket Created by Francis Nguyen
# Please include the string​: [perl #115416]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=115416 >

This is a bug report for perl from francis.nguyen@​oicr.on.ca,
generated with the help of perlbug 1.36 running under perl 5.10.0.

-----------------------------------------------------------------
[Please enter your report here]

I am installing the latest version of perl (5.16.1) onto an nfs filesystem.
I downloaded the .tar.gz from www.perl.org and unzipped it into an nfs filesystem.
I then ran the command ./Configure -des -Dprefix=/.mounts/labs/private/Software/Perl-BL/. (The choice of prefix does not seem to matter)
The configure runs as normal until hanging after printing 'fcntl() found.'
I tried debugging the issue and the problem seems to be the file UU/try inside of the perl directory, which hangs when run.
The install process works fine if I install it anywhere else.
The install process also works fine from my Ubuntu machine.

Steps to reproduce​:
1) Download the .tar.gz from www.perl.org
2) Unzip onto an nfs filesystem.
3) Run ./Configure -des from Debian

Configure definitely shouldn't hang, but I am unable to reproduce this
problem. I have been building perl on an NFS filesystem from Debian for
many years without this problem, so I'm going to have to rely on you for
debugging.

If I had to guess, I'd guess your nfs client or server is having problems
with file locking, but I can't be sure without further information. It
might be that stopping and restarting the NFS daemons clears it all up.
If not, here's what I suggest trying next​:

First, could please re-run Configure without the -s option? The -s option
("silent") is throwing away information that will tell us which test is
hanging.

Next, if it hangs after printing "Checking if fcntl-based file locking
works..." then it is hanging in the file locking test. Try
compiling and running the following C program​:

/* Start of program */
#define I_STDLIB
#ifdef I_STDLIB
#include <stdlib.h>
#endif
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
void blech(int x) { exit(3); }
int main() {
#if defined(F_SETLK) && defined(F_SETLKW)
  struct flock flock;
  int retval, fd;
  fd = open("try.c", O_RDONLY);
  flock.l_type = F_RDLCK;
  flock.l_whence = SEEK_SET;
  flock.l_start = flock.l_len = 0;
  signal(SIGALRM, blech);
  alarm(10);
  retval = fcntl(fd, F_SETLK, &flock);
  close(fd);
  (retval < 0 ? exit(2) : exit(0));
#else
  exit(2);
#endif
}

/* end of program */

Even if the fcntl() call fails, this program is supposed to time out after
10 seconds, so I'm very puzzled as to how it's hanging. If this program
hangs, can you re-run it under gdb and verify that it's hanging on the
fcntl() call?

Also helpful for debugging/reproducing this would be more information
about the exact set-up​:

  1. uname -a output on the Debian client (The info in the original
  perlbug report is from an older version of perl, so I don't know
  if it's relevant or not.)
  2. NFS versions on client and server (e.g. dpkg --status nfs-common)
  on a debian client; whatever is approproate on the server)
  3. Listing of any nfs mount options.
  4. Compiler & libc versions being used.

Thanks,

--
  Andy Dougherty doughera@​lafayette.edu

@p5pRT
Copy link
Author

p5pRT commented Oct 25, 2012

From @ppisar

On 2012-10-24, Francis Nguyen <Francis.Nguyen@​oicr.on.ca> wrote​:

The problem resolved itself this morning (post-restart) but then
suddenly began giving the same problem again about an hour ago. After
re-running configure without -s, I can confirm that it hangs after
printing "Checking if fcntl-based file locking works...".

Maybe you are not running lock manager on NFS server and client or the
communication is being dropped by a firewall in between.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Oct 25, 2012

From francis.nguyen@oicr.on.ca

--RESOLVED--
The problem, according to IT, was a 'wedged nfslock daemon'. They also said that the try.c code was very helpful in resolving the issue.

Thank you very much for your help,
Francis Nguyen
Student

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2012

From francis.nguyen@oicr.on.ca

If I figure out specifically caused this, I'll try to leave a comment
explaining what happened. Unfortunately, all I know is that IT had
restarted the daemon and everything had begun to work again.

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2012

From [Unknown Contact. See original ticket]

If I figure out specifically caused this, I'll try to leave a comment
explaining what happened. Unfortunately, all I know is that IT had
restarted the daemon and everything had begun to work again.

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2012

francis.nguyen@oicr.on.ca - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant