Re: Gitweb giving me some warnings in Apache's error_log
From: Jakub Narebski <hidden>
Date: 2016-06-15 22:47:12
Mark A Rada [off-list ref] writes:
It doesn't seem to cause any other problems, but I don't know if it is significant or not. [Fri Aug 7 08:51:13 2009] gitweb.cgi: Variable "$project_maxdepth" may be unavailable at /var/www/private/gitweb/cgi-bin/gitweb.cgi line 2296. [Fri Aug 7 08:51:13 2009] gitweb.cgi: Variable "$projectroot" may be unavailable at /var/www/private/gitweb/cgi-bin/gitweb.cgi line 2304. Apache 2.2.12/ mod_perl 2.04/ perl 5.8.8
From perldiag(1) manpage:
Variable "%s" may be unavailable
(W closure) An inner (nested) anonymous subroutine is inside a
named subroutine, and outside that is another subroutine; and the
anonymous (innermost) subroutine is referencing a lexical variable
defined in the outermost subroutine. For example:
sub outermost { my $a; sub middle { sub { $a } } }
If the anonymous subroutine is called or referenced (directly or
indirectly) from the outermost subroutine, it will share the
variable as you would expect. But if the anonymous subroutine is
called or referenced when the outermost subroutine is not active,
it will see the value of the shared variable as it was before and
during the *first* call to the outermost subroutine, which is
probably not what you want.
In these circumstances, it is usually best to make the middle
subroutine anonymous, using the "sub {}" syntax. Perl has
specific support for shared variables in nested anonymous
subroutines; a named subroutine in between interferes with this
feature.
The warning is about 'wanted' anonymous subroutine passed to
File::Find::find. The "middle" subroutine is git_get_projects_list,
and the "outermost" is mod_perl / ModPerl::Registry request loop.
We can't make git_get_projects_list anonymous, but anonymous
subroutine is not called or referenced outside git_get_projects_list,
nor it is called or referenced outside mod_perl request/event loop.
This warning is harmless... but I do not know how to silence it.
--
Jakub Narebski
Poland
ShadeHawk on #git