Re: bug: calling setlocale(LC_ALL,name of any locale with utf8 charset)more than once crashes httpd with mod_perl

2002-04-15 Thread Stas Bekman

Vlad Harchev wrote:

 When using the following script under mod_perl, each httpd process crashes on
the 2nd request to execute this script.
 
#!/usr/bin/perl 
use strict; use POSIX qw(locale_h); 
setlocale(LC_ALL,'en_US.utf8'); 
print Expires: 1 Jan 1970\nContent-Type: text/html\n\nHi; 
-
 This crashes if instead of 'en_US.utf8' one uses any other utf8 locale that
is available in the system. If one uses locale with single-byte encoding (e.g. 
'en_US.ascii' or 'ru_RU.koi8r') it doesn't crash httpd. (I didn't try
other multibyte encodings beside utf8).

 If one uses LC_COLLATE instead of LC_ALL, it doesn't crash for any locale (I
didn't try other locale categories).  (The httpd server is started under
locale 'ru_RU.koi8r' - a single-byte locale).

 I'm using mod_perl on RH72 for x86, versions of the relevant software:
perl-5.6.0-17
mod_perl-1.24_01-3
glibc-2.2.4-19.3
apache-1.3.20-16

I doubt it's a bug in mod_perl. Setting locale affects the lots of core 
things, so a simple test may not trigger the problem.

BTW, if I remember correctly Perl 5.6.0 is not utf8-safe (or unicode in 
general), correct me if I'm wrong. Can you try  the same with the latest 
bleadperl? (skip the 'make test' there is some problem in perl that I'm 
fixing now). 5.8.0 should be out in a month or so and it should work 
well with unicode.
 
 
  Unfortunately, I don't have time for compiling and installing it..
  I hope somebody on this list who has already installed version of recent perl 
 will test the problem..

Confirmed as working with bleadperl (i.e the latest perl-5.7.3)

Also confirmed as working with the stock 5.6.1 perl on linux.

So I'd suggest to upgrade to 5.6.1 if possible as the safest step, 
before 5.8.0 is released.

All tested with Apache/1.3.25-dev (Unix) mod_perl/1.26_01-dev but the 
non-cvs version should probably work the same way.

__
Stas BekmanJAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide --- http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com




bug: calling setlocale(LC_ALL,name of any locale with utf8 charset)more than once crashes httpd with mod_perl

2002-04-14 Thread Vlad Harchev

 Hi, 

 When using the following script under mod_perl, each httpd process crashes on
the 2nd request to execute this script.
 
#!/usr/bin/perl 
use strict; use POSIX qw(locale_h); 
setlocale(LC_ALL,'en_US.utf8'); 
print Expires: 1 Jan 1970\nContent-Type: text/html\n\nHi; 
-
 This crashes if instead of 'en_US.utf8' one uses any other utf8 locale that
is available in the system. If one uses locale with single-byte encoding (e.g. 
'en_US.ascii' or 'ru_RU.koi8r') it doesn't crash httpd. (I didn't try
other multibyte encodings beside utf8).

 If one uses LC_COLLATE instead of LC_ALL, it doesn't crash for any locale (I
didn't try other locale categories).  (The httpd server is started under
locale 'ru_RU.koi8r' - a single-byte locale).

 I'm using mod_perl on RH72 for x86, versions of the relevant software:
perl-5.6.0-17
mod_perl-1.24_01-3
glibc-2.2.4-19.3
apache-1.3.20-16


 It seems it's a bug in mod_perl, since the following C program
--
#include locale.h
#include stdlib.h

int main(int argc,char** argv)
{
setlocale(LC_ALL,en_US.utf8);
printf(try 1\n);

setlocale(LC_ALL,en_US.utf8);
printf(try 2\n);

setlocale(LC_ALL,en_US.utf8);
printf(try 3\n);
return 0;
}

 Works without crashing.

 Also, the following perl script:

#!/usr/bin/perl
use strict;
use POSIX qw(locale_h);
for(my $i=0;$i10; ++$i)
{
setlocale(LC_ALL,'en_US.utf8');
}
print done\n;

 Works without crashing too.

 Granted, LC_COLLATE it's enough for my scripts, so this bug is not fatal to
me.

 Best regards,
  -Vlad




Re: bug: calling setlocale(LC_ALL,name of any locale with utf8 charset)more than once crashes httpd with mod_perl

2002-04-14 Thread Stas Bekman

Vlad Harchev wrote:
  Hi, 
 
  When using the following script under mod_perl, each httpd process crashes on
 the 2nd request to execute this script.
  
 #!/usr/bin/perl 
 use strict; use POSIX qw(locale_h); 
 setlocale(LC_ALL,'en_US.utf8'); 
 print Expires: 1 Jan 1970\nContent-Type: text/html\n\nHi; 
 -
  This crashes if instead of 'en_US.utf8' one uses any other utf8 locale that
 is available in the system. If one uses locale with single-byte encoding (e.g. 
 'en_US.ascii' or 'ru_RU.koi8r') it doesn't crash httpd. (I didn't try
 other multibyte encodings beside utf8).
 
  If one uses LC_COLLATE instead of LC_ALL, it doesn't crash for any locale (I
 didn't try other locale categories).  (The httpd server is started under
 locale 'ru_RU.koi8r' - a single-byte locale).
 
  I'm using mod_perl on RH72 for x86, versions of the relevant software:
 perl-5.6.0-17
 mod_perl-1.24_01-3
 glibc-2.2.4-19.3
 apache-1.3.20-16

I doubt it's a bug in mod_perl. Setting locale affects the lots of core 
things, so a simple test may not trigger the problem.

BTW, if I remember correctly Perl 5.6.0 is not utf8-safe (or unicode in 
general), correct me if I'm wrong. Can you try  the same with the latest 
bleadperl? (skip the 'make test' there is some problem in perl that I'm 
fixing now). 5.8.0 should be out in a month or so and it should work 
well with unicode.

In any case, you should send a backtrace of the coredump according to 
the SUPPORT file found in the mod_perl source distro.

__
Stas BekmanJAm_pH -- Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide --- http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com