develooper Front page | perl.perl5.porters | Postings from October 2003

Re: [perl #23042] solaris open file descriptor recursive lib loading error.

Thread Previous | Thread Next
From:
Slaven Rezic
Date:
October 11, 2003 06:35
Subject:
Re: [perl #23042] solaris open file descriptor recursive lib loading error.
Message ID:
87d6d33nng.fsf@vran.herceg.de
"craig@malchiarts.com (via RT)" <perlbug-followup@perl.org> writes:

> # New Ticket Created by  craig@malchiarts.com 
> # Please include the string:  [perl #23042]
> # in the subject line of all future correspondence about this issue. 
> # <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=23042 >
> 
> 
> 
> This is a bug report for perl from craig@malchiarts.com,
> generated with the help of perlbug 1.34 running under perl v5.8.0.
> 
> 
> -----------------------------------------------------------------
> [Please enter your report here]
> 
> Solaris has a known issue with open file descriptors,

You can reproduce the problem on other systems, too. Just set the file
descriptor limit to a low value (e.g. by using limits -n). Other
systems like Linux and FreeBSD have much higher default limits than
Solaris.

> but the error message
> thrown when the limit has been reached by loading a lib is misleading.  Also,
> recursive library calls (libA calls libB calls libC etc...) generate the same
> error message.
> 
> use program below for reference:
> 
[...]
> 
> 
> also note that adding a -m switch greater than the accepted amount will not
> cause an error. (ie: -m 400) until something is attempted to be done with the
> file handle.  (I don't know if that's an IO::File bug or no...).
> 
> I suppose it's not such a big deal, but it's come up twice at work... first
> time took some time to figure it out...
> 
> (note:  below site configuration is *not* where I'm having the problem ;)
> 
> -craig
> 
> 

In principle this could be solved by a little more diagnostics. e.g.:

--- bleedperl/pp_ctl.c	Wed Oct  8 14:34:00 2003
+++ bleedperl2/pp_ctl.c	Sat Oct 11 15:26:59 2003
@@ -3266,6 +3266,10 @@ PP(pp_require)
 		}
 		sv_catpvn(msg, ")", 1);
 		SvREFCNT_dec(dirmsgsv);
+		if (errno && errno != ENOENT) {
+		    sv_catpvn(msg, ": ", 2);
+		    sv_catpv(msg, Strerror(errno));
+		}
 		msgstr = SvPV_nolen(msg);
 	    }
 	    DIE(aTHX_ "Can't locate %s", msgstr);

-- 
Slaven Rezic - slaven@rezic.de
  BBBike - route planner for cyclists in Berlin
  WWW version:                           http://www.bbbike.de
  Perl/Tk version for Unix and Windows:  http://bbbike.sourceforge.net

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About