RE: non-DSO mod_perl, Embperl, and AIX not working
After making a few tweaks to the test.pl script and passing the 'h' command-line parameter (only do mod_perl tests) I was able to run all the tests (only under mod_perl) successfully. I then was able to run some successful tests against some .epl's that I had previously written using a different OS. I can't run Embperl outside of apache, but have only done that on the rare occasion anyway, so that's not a great loss. Thanks for all your help. It has been a few years since I have used AIX and was in much need of reminders related to AIX's "strange/different/odd/weird" linker. Again, thanks immensely for all your assistance. BTW, is it appropriate for me to offer to help with incorporating your knowledge into the Embperl install scripts? -- Greg Estep [EMAIL PROTECTED] -Original Message- From: Jens-Uwe Mager [mailto:[EMAIL PROTECTED]] Sent: Thursday, June 15, 2000 9:34 AM To: Greg Estep Cc: Jens-Uwe Mager; [EMAIL PROTECTED] Subject: Re: non-DSO mod_perl, Embperl, and AIX not working On Wed, Jun 14, 2000 at 07:11:11PM -0400, Greg Estep wrote: I then did an apache 'make install', even though I think that the Embperl compile and test processes use the source-code version of httpd... Now a "make test" of Embperl still gives the following results: $ make test PERL_DL_NONLAZY=0 /usr/local/bin/perl -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.6.0/ aix -I/usr/local/lib/perl5/5.6.0 test.pl loading...Can't load 'blib/arch/auto/HTML/Embperl/Embperl.so' for modu le HTML::Embperl: dlopen: blib/arch/auto/HTML/Embperl/Embperl.so: 30 blib/arch/auto/HTML/ Embperl/Embperl.so36 ap_get_client_block 131 perl36 ap_log_error 132 perl36 ap_palloc 133 Did you try the Embperl in the httpd yet? I am not entirely sure if the make test isn't attempting to load the Embperl into a plain perl interpreter, which will not work as it does not support the Apache symbols. I have to confess to have never run the test, it did always complain about some packages I do not have installed and thus I tested it in a live server with a set of my own pages. -- Jens-Uwe Mager HELIOS Software GmbH Steinriede 3 30827 Garbsen Germany Phone: +49 5131 709320 FAX:+49 5131 709325 Internet: [EMAIL PROTECTED]
RE: non-DSO mod_perl, Embperl, and AIX not working
Before I sent my original message, I tracked down all the symbols, and their object/library files. I added several ".o"'s and ".a"'s from the apache and mod_perl source trees, a couple from "/usr/lib/perl" and a couple from /usr/lib via '-lxxx'. After I got a clean link (there were some "duplicate symbol" errors) I had the same problem (seg. faults) as I had with the '-berok' flag. -Original Message- From: Shane Nay [mailto:[EMAIL PROTECTED]] Sent: Tuesday, June 13, 2000 8:22 PM To: Greg Estep Cc: [EMAIL PROTECTED] Subject: RE: non-DSO mod_perl, Embperl, and AIX not working Those are internal functions to apache, like helper functions. Your probably missing an object file in your ld command, I don't have it open right now, but just run nm blah.o|grep ap_palloc on all the object files running around in the apache directory, and you'll find it. (Notice that most of these functions "look" similar to C calls, that's because they sort of are. There like cross platform wrapper functions for apache, pretty cool huh?) Oh, yes and nm's output will tell you two things, where the function is "used", and where its "defined". BTW: I think you're looking for libap.a, I just poked through that archive of object files, and it contained the symbols you're looking for. I don't know if AIX supports linking in archive files, but if not just link in by hand all the object files in that directory. (apache_1.blah/src/ap/*.o) If nm shows the symbols in place, I would say it's probably the AIX linkers fault. I don't know much about AIX specifically but I have heard lots of people complain about their linker :-(. Thanks, Shane.
RE: non-DSO mod_perl, Embperl, and AIX not working
I don't have a httpd.exp in /usr/local/apache/libexec. I assume that is because I am not using DSO for any of my apache modules. I used -bI:apache-source-dir/src/support/httpd.exp and got a clean compile/link. When I try 'make test', I get: $ make test PERL_DL_NONLAZY=0 /usr/local/bin/perl -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.6.0/aix -I/usr/local/lib/perl5/5.6.0 test.pl loading...Can't load 'blib/arch/auto/HTML/Embperl/Embperl.so ' for module HTML::Embperl: dlopen: blib/arch/auto/HTML/Embperl/Embperl.so: 30 blib/arch/auto/HTML/Embperl/Embperl.so36 ap_get_client_block 131 perl36 ap_log_e rror 132 perl36 ap_palloc 133 perl36 ap_pstrdup 134 perl36 ap_rflush 135 perl36 ap_rputc 136 perl36 ap_rwrite 137 perl36 ap_send_http_header 138 perl36 ap_set_c ontent_length 139 perl36 ap_setup_client_block 140 perl36 ap_should_client_block 141 perl36 ap_table_add 142 perl36 ap_table_set 143 perl at /usr/local/lib/perl 5/5.6.0/aix/DynaLoader.pm line 200. at test.pl line 557 Compilation failed in require at test.pl line 557. BEGIN failed--compilation aborted at test.pl line 557. make: *** [test_dynamic] Error 255 BTW, since I am not using DSO, and am using perl 5.06, I havn't applied the perl patch mentioned in the mod_perl INSTALL. -Original Message- From: Jens-Uwe Mager [mailto:[EMAIL PROTECTED]] Sent: Wednesday, June 14, 2000 1:25 PM To: Greg Estep Cc: Jens-Uwe Mager; [EMAIL PROTECTED] Subject: Re: non-DSO mod_perl, Embperl, and AIX not working On Tue, Jun 13, 2000 at 08:36:40PM -0400, Greg Estep wrote: When 'make' invokes 'ld' with the following command: ld -o blib/arch/auto/HTML/Embperl/Embperl.so -bhalt:4 -bM:SRE -bI:/usr/local/lib/ perl5/5.6.0/aix/CORE/perl.exp -bE:Embperl.exp -b noentry -lC -lc -L/usr/local/lib Embperl.o epmain.o epio.o epchar.o epcmd.o eputil.o epeval.o epdbg.o -bI:/usr/local/lib/perl5/site_perl/5.6.0/aix/auto/Apache/mod_perl.ex p These following errors are produced. ld: 0711-317 ERROR: Undefined symbol: .ap_palloc ld: 0711-317 ERROR: Undefined symbol: .ap_rputc ld: 0711-317 ERROR: Undefined symbol: .ap_rflush ld: 0711-317 ERROR: Undefined symbol: .ap_rwrite ld: 0711-317 ERROR: Undefined symbol: .ap_setup_client_block ld: 0711-317 ERROR: Undefined symbol: .ap_should_client_block ld: 0711-317 ERROR: Undefined symbol: .ap_get_client_block ld: 0711-317 ERROR: Undefined symbol: .ap_pstrdup ld: 0711-317 ERROR: Undefined symbol: .ap_table_set ld: 0711-317 ERROR: Undefined symbol: .ap_table_add ld: 0711-317 ERROR: Undefined symbol: .ap_set_content_length ld: 0711-317 ERROR: Undefined symbol: .ap_send_http_header ld: 0711-317 ERROR: Undefined symbol: .ap_log_error ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. These are the symbols that embperl needs to reference from the main Apache executable, there is an -bI:/usr/local/apache/libexec/httpd.exp missing in the above linker command line. I would suspect that the embperl Makefile.PL could use an overhaul and use the new features of Apache::src to find the flags needed for linking a plug-in that needs to link both against perl and httpd. I also would recommend that you apply the patch to perl mentioned in the mod_perl INSTALL file. -- Jens-Uwe Mager HELIOS Software GmbH Steinriede 3 30827 Garbsen Germany Phone: +49 5131 709320 FAX:+49 5131 709325 Internet: [EMAIL PROTECTED]
RE: PerlAuthenHandler
When you installed mod_perl on the Stronghold server, did you indicate that you wanted to install support for perl authentication handlers? (I think adding PERL_AUTHEN=1 to the "perl Makefile.PL" command is the way to do this.) Sorry to be so vague, but since I use "EVERYTHING=1" I really have never had to deal with this issue before. -Original Message- From: HORNER, J. (JH8) [mailto:[EMAIL PROTECTED]] Sent: Friday, June 09, 2000 9:25 AM To: '[EMAIL PROTECTED]' Cc: '[EMAIL PROTECTED]' Subject: PerlAuthenHandler What are the rules for using the PerlAuthenHandler? I have a timeout module that works great on my Apache 1.3.12/mod_perl 1.24, and if I put the directives directly in the httpd.conf file. When I try to put the stuff in the httpd.conf file on my "Stronghold/2.4.1 Apache/1.3.3 C2NetEU/2409 Doorkeeper/2.0 (Unix) mod_perl/1.21 configured" server, the service doesn't start. Here are the entries on the first server: PerlSetEnv PERL5LIB lib/perl PerlRequire conf/startup.pl PerlFreshRestart On PerlModule Apache::Registry Directory /data/2jnetworks/test AuthType Basic AuthName TEST AuthUserFile /usr/local/apache/conf/www_passwd AuthGroupFile /usr/local/apache/conf/www_group require group 2jnetworks PerlAuthenHandler Apache::TimeOut PerlSetVar TimeLimit 15 /Directory Here are the entries for the second server: PerlSetEnv PERL5LIB lib/perl PerlRequire conf/startup.pl PerlFreshRestart On PerlModule Apache::Registry Directory /data/httpd/docs/jhorner AuthName Test AuthType Basic AuthUserFile /usr/local/apache/conf/www_passwd AuthGroupFile /usr/local/apache/conf/www_group require group test PerlAuthenHandler Apache::TimeOut PerlSetVar TimeOut 15 /Directory When I put the PerlAuthenHandler entries into an .htaccess file, the server will start, but I get: /data/httpd/docs/jhorner/.htaccess: Invalid command 'PerlAuthenHandler', perhaps mis-spelled or defined by a module not included in the server configuration I have other perl handler type things in the httpd.conf file, but nothing else gives this error, any ideas? Thanks, JJ
RE: non-DSO mod_perl, Embperl, and AIX not working
When I do "dump -nv httpd | egrep 'ap_palloc|ap_table'" I don't get any output. I went into the apache_1.3.12/src directory and manually compiled httpd with the same command issued by make with the addition of -bE:support/httpd.exp. The complete command looked like this: cc -DAIX=43 -U__STR__ -DAIX_BIND_PROCESSOR -qnogenpcomp -qnousepcomp -DMOD_ PERL -DUSE_PERL_SSI -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=1638 4 -I /usr/local/include -q32 -D_LARGE_FILES -qlonglong -DUSE_HSREGEX -DUSE_EXPAT -I./ lib/expat-lite -DNO_DL_NEEDED `./apaci` -lm -o httpd buildmark.o modules.o modul es/perl/libperl.a modules/standard/libstandard.a main/libmain.a ./os/unix/libos. a ap/libap.a regex/libregex.a ib/expat-lite/libexpat.a -bE:/usr/local/lib/perl 5/5.6.0/aix/CORE/perl.exp -L/usr/local/lib -b32 /usr/local/lib/perl5/5.6.0/aix/ auto/DynaLoader/DynaLoader.a -L/usr/local/lib/perl5/5.6.0/aix/CORE -lperl -l bind -lnsl -ldbm -ldl -lld -lm -lC -lc -lcrypt -lbsd -lPW -liconv -bE:support/ht tpd. exp Now a "dump -nv httpd | egrep 'ap_palloc|ap_table'" looks like: [412] 0x20039330.data EXP DS SECdef[noIMid] ap_table_merge [413] 0x2003933c.data EXP DS SECdef[noIMid] ap_table_add [440] 0x20039834.data EXP DS SECdef[noIMid] ap_overlap_tables [442] 0x2003984c.data EXP DS SECdef[noIMid] ap_table_do [443] 0x20039858.data EXP DS SECdef[noIMid] ap_table_addn [444] 0x20039864.data EXP DS SECdef[noIMid] ap_table_unset [445] 0x20039870.data EXP DS SECdef[noIMid] ap_table_mergen [446] 0x2003987c.data EXP DS SECdef[noIMid] ap_table_setn [447] 0x20039888.data EXP DS SECdef[noIMid] ap_table_set [448] 0x20039894.data EXP DS SECdef[noIMid] ap_table_get [465] 0x20039960.data EXP DS SECdef[noIMid] ap_palloc 0x2003d64c 0x019f Pos_Rel 0x0002 ap_table_merge 0x2003d650 0x01a0 Pos_Rel 0x0002 ap_table_add I then did an apache 'make install', even though I think that the Embperl compile and test processes use the source-code version of httpd... Now a "make test" of Embperl still gives the following results: $ make test PERL_DL_NONLAZY=0 /usr/local/bin/perl -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.6.0/ aix -I/usr/local/lib/perl5/5.6.0 test.pl loading...Can't load 'blib/arch/auto/HTML/Embperl/Embperl.so' for modu le HTML::Embperl: dlopen: blib/arch/auto/HTML/Embperl/Embperl.so: 30 blib/arch/auto/HTML/ Embperl/Embperl.so36 ap_get_client_block 131 perl36 ap_log_error 132 perl36 ap_palloc 133 perl36 ap_pstrdup 134 perl36 ap_rflush 135 perl36 ap_rputc 136 perl36 ap_rwrite 137 perl36 ap_send_http_header 138 perl36 ap_set_content_length 139 perl36 ap_setup_client_block 140 perl36 ap_should_client_block 141 perl36 ap_table_add 142 perl36 ap_table_set 143 perl at /usr/local/lib/perl5/5.6.0/aix/DynaLoader.pm line 200. at test.pl line 557 Compilation failed in require at test.pl line 557. BEGIN failed--compilation aborted at test.pl line 557. make: *** [test_dynamic] Error 255 -Original Message- From: Jens-Uwe Mager [mailto:[EMAIL PROTECTED]] Sent: Wednesday, June 14, 2000 5:54 PM To: Greg Estep Cc: Jens-Uwe Mager; [EMAIL PROTECTED] Subject: Re: non-DSO mod_perl, Embperl, and AIX not working On Wed, Jun 14, 2000 at 05:37:59PM -0400, Greg Estep wrote: I don't have a httpd.exp in /usr/local/apache/libexec. I assume that is because I am not using DSO for any of my apache modules. I used -bI:apache-source-dir/src/support/httpd.exp and got a clean compile/link. Well, Apache's make install probably assumes that it is not needed in this case, which is not entirely true as can be seen from this situation. When I try 'make test', I get: $ make test PERL_DL_NONLAZY=0 /usr/local/bin/perl -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.6.0/aix -I/usr/local/lib/perl5/5.6.0 test.pl loading...Can't load 'blib/arch/auto/HTML/Embperl/Embperl.so ' for module HTML::Embperl: dlopen: blib/arch/auto/HTML/Embperl/Embperl.so: 30 blib/arch/auto/HTML/Embperl/Embperl.so36 ap_get_client_block 131 perl36 ap_log_e rror 132 perl36 ap_palloc 133 perl36 ap_pstrdup 134 perl36 ap_rflush 135 perl36 ap_rputc 136 perl36 ap_rwrite 137 perl36 ap_send_http_header 138 perl36 ap_set_c ontent_length 139 perl36 ap_setup_client_block 140 perl36 ap_should_client_block 141 perl36 ap_table_add 142 perl36 ap_table_set 143 perl at /usr/local/lib/perl 5/5.6.0/aix/DynaLoader.pm line 200. at test.pl line 557 Compilation failed in require at test.pl line 557. BEGIN failed--compilation aborted at test.pl line 557. make: *** [test_dynamic] Error 255 Well this surely looks like your Apache main part does not export the symbols in question, does a dump -nv httpd lis
RE: non-DSO mod_perl, Embperl, and AIX not working
R_RBR[18] .EndOutput 0b44 .textR_RBR[18] .EndOutput 0b68 .textR_RBR[18] .EndOutput ld: 0711-317 ERROR: Undefined symbol: .ap_table_set .ap_table_set [1126] ER PR epmain.c(epmain.o) 0adc .textR_RBR[18] .EndOutput ld: 0711-317 ERROR: Undefined symbol: .ap_table_add .ap_table_add [1128] ER PR epmain.c(epmain.o) 0b7c .textR_RBR[18] .EndOutput ld: 0711-317 ERROR: Undefined symbol: .ap_set_content_length .ap_set_content_length[1134] ER PR epmain.c(epmain.o) 0ba8 .textR_RBR[18] .EndOutput ld: 0711-317 ERROR: Undefined symbol: .ap_send_http_header .ap_send_http_header [1136] ER PR epmain.c(epmain.o) 0bb4 .textR_RBR[18] .EndOutput 11bc .textR_RBR[20] .StartOutput ld: 0711-317 ERROR: Undefined symbol: .ap_log_error .ap_log_error [1246] ER PR epmain.c(epmain.o) 6260 .textR_RBR[256] .EMBPERL_LogError 6280 .textR_RBR[256] .EMBPERL_LogError ER: The return code is 8. -Original Message- From: Jens-Uwe Mager [mailto:[EMAIL PROTECTED]] Sent: Thursday, June 08, 2000 8:45 AM To: Greg Estep Cc: [EMAIL PROTECTED] Subject: Re: non-DSO mod_perl, Embperl, and AIX not working On Thu, Jun 01, 2000 at 07:40:58AM -0400, Greg Estep wrote: I am using IBM's C complier (cc) under AIX 4.3.3 with Apache 1.3.12, mod_perl 1.24 (statically linked, not DSO), perl 5.00503, and Embperl 1.3b3. The "offline", "execute function", and "cgi mode" Embperl tests are all successful. In the "mod_perl" mode, even the simple "ascii" test fails. It fails with a seg. fault and a dbx stack trace that looks like this: ap_palloc() at 0xd1179d98 EMBPERL__malloc() at 0xd1178b98 EMBPERL_SetupFileData() at 0xd1177118 EMBPERL_SetupRequest() at 0xd1177764 XS_HTML__Embperl_SetupRequest() at 0xd116fcb8 .() at 0x1004a344 .() at 0x100536f0 .() at 0x1002ff98 perl_call_handler(??, ??, ??) at 0x10113f70 perl_run_stacked_handlers(??, ??, ??) at 0x10113160 perl_handler(??) at 0x10111d38 ap_invoke_handler(0x2011f1f0) at 0x100c42bc process_request_internal(0x2011f1f0) at 0x100f4d6c ap_process_request(0x2011f1f0) at 0x100f648c child_main(0x0) at 0x10002d24 make_child(0x200498e0, 0x0, 0x39363aa3) at 0x100025a0 startup_children(0x2) at 0x1000248c standalone_main(0x4, 0x2ff228c8) at 0x10001928 main(0x4, 0x2ff228c8) at 0x100014b0 To get Embperl.so to successfully build I added "-b erok" to LDDLFLAGS. I also tried '-G' with similar results. Without the modification to LDDLFLAGS I got several "unresolved symbol" errors. I also get similar results with Embperl 1.2b9, Apache 1.3.9, and mod_perl 1.23. I did not yet try to compile mod_perl into Apache statically, so I am not 100% sure why you get unresolved symbols, it would be interesting to see which ones are unresolved. There are actually two ways to do dynamic linking under AIX nowadays, namely the classic AIX way that was available since AIX 3.1 (uses export files like under Windows or OS/2) and for System V compatibility the runtime linking style which more or less is like ELF dynamic linking used under Linux or Solaris. Both Apache and Perl are only doing the classic AIX style dynamic linking, so you cannot use the Linker Option -G to turn on runtime linking for a module, you must use the -bE:export file -bM:SRE options instead. The option -berok may not be used with the classic style dynamic linking, this is causing the segfault here. -- Jens-Uwe Mager HELIOS Software GmbH Steinriede 3 30827 Garbsen Germany Phone: +49 5131 709320 FAX:+49 5131 709325 Internet: [EMAIL PROTECTED]
RE: Embperl struggles
The LOG filehandle is predefined by Embperl. Anything written to it is put into Embperl's log file (usually /tmp/embperl.log). If you use a different name, you will probably be OK. On the other hand, you can just delete the call to "open" (and "close) and use the log file Embperl already provides. BTW, "LOG" and several other variables are discussed in the "Predefined variables" section of the HTML::Embperl man page. -- Greg Estep [EMAIL PROTECTED] #include std/disclaimer.h -Original Message- From: Toni Mueller [mailto:[EMAIL PROTECTED]] Sent: Friday, June 02, 2000 10:18 AM To: [EMAIL PROTECTED] Subject: Embperl struggles Hello, trying to develop with Embperl I encounter the following problems: 1. Using a sequence of statements like [- open LOG, "/tmp/logfile.txt"; print LOG "some debug info: $var\n"; close LOG; -] ever gets me the following error: error in Perl code: Can't locate object method "CLOSE" via package "HTML::Embperl::Log" but I don't understand why. I can't remember getting this error code for other Perl code. Defining a function that contains this code and require'ing this doesn't help, but using a full-blown package and instantiating this is ok, albeit imho heavily oversized. 2. requrire'ing a file that defines some functions sometimes gives me an error that the functions in that file are _not_ defined... 3. I have a hard time understanding when to use [- -] and when to use [! !] or [* *]. Most of what I've done so far uses [- -] and [$ $] (which I so far have no trouble with). The scoping and execution time issues are not that clear to me. Last but not least I'd like some kind of pretty printer since my Emacs won't help me here. I tried the two things mentioned on the web, but to no avail (one requiring Xemacs instead of Emacs, too). This is all with apache 1.3.10, mod-perl 1.21 and Embperl 1.2.1 (I also have no Perl 5.6.0 yet, only 5.005). Any help is greatly appreciated! Best Regards, --Toni++
non-DSO mod_perl, Embperl, and AIX not working (duplicate ?)
Sorry if this is a duplicate. I sent the message yesterday, but I haven't seen it posted back to me via the list. We have recently been having problems with our email services... --- I am using IBM's C complier (cc) under AIX 4.3.3 with Apache 1.3.12, mod_perl 1.24 (statically linked, not DSO), perl 5.00503, and Embperl 1.3b3. The "offline", "execute function", and "cgi mode" Embperl tests are all successful. In the "mod_perl" mode, even the simple "ascii" test fails. It fails with a seg. fault and a dbx stack trace that looks like this: ap_palloc() at 0xd1179d98 EMBPERL__malloc() at 0xd1178b98 EMBPERL_SetupFileData() at 0xd1177118 EMBPERL_SetupRequest() at 0xd1177764 XS_HTML__Embperl_SetupRequest() at 0xd116fcb8 .() at 0x1004a344 .() at 0x100536f0 .() at 0x1002ff98 perl_call_handler(??, ??, ??) at 0x10113f70 perl_run_stacked_handlers(??, ??, ??) at 0x10113160 perl_handler(??) at 0x10111d38 ap_invoke_handler(0x2011f1f0) at 0x100c42bc process_request_internal(0x2011f1f0) at 0x100f4d6c ap_process_request(0x2011f1f0) at 0x100f648c child_main(0x0) at 0x10002d24 make_child(0x200498e0, 0x0, 0x39363aa3) at 0x100025a0 startup_children(0x2) at 0x1000248c standalone_main(0x4, 0x2ff228c8) at 0x10001928 main(0x4, 0x2ff228c8) at 0x100014b0 To get Embperl.so to successfully build I added "-b erok" to LDDLFLAGS. I also tried '-G' with similar results. Without the modification to LDDLFLAGS I got several "unresolved symbol" errors. I also get similar results with Embperl 1.2b9, Apache 1.3.9, and mod_perl 1.23. BTW, I did not personally compile my perl executable, it is straight from a fileset on the AIX 4.3.3 CD. I have, however, upgraded several modules to their most recent CPAN version. My 'perl -V' output looks like this: Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=aix, osvers=4.3.3.0, archname=aix uname='aix funny 3 4 01716600 ' hint=recommended, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O', gccversion= cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE - qmaxmem=16384' ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE - qmaxmem=16384' stdchar='unsigned char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 alignbytes=8, usemymalloc=n, prototype=define Linker and Libraries: ld='ld', ldflags ='-s' libpth=/lib /usr/lib /usr/ccs/lib libs=-lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lbsd -lPW -lC_r libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='- bE:perl.exp' cccdlflags=' ', lddlflags='-bhalt:4 -bM:SRE - bI:$(PERL_INC)/perl.exp -bE:$(B ASEEXT).exp -b noentry -lc' Characteristics of this binary (from libperl): Built under aix Compiled at Aug 14 1999 08:59:55 @INC: /usr/opt/perl5/lib/5.00503/aix /usr/opt/perl5/lib/5.00503 /usr/opt/perl5/lib/site_perl/5.005/aix /usr/opt/perl5/lib/site_perl/5.005 . -- Greg Estep [EMAIL PROTECTED]
non-DSO mod_perl, Embperl, and AIX not working
I am using IBM's C complier (cc) under AIX 4.3.3 with Apache 1.3.12, mod_perl 1.24 (statically linked, not DSO), perl 5.00503, and Embperl 1.3b3. The "offline", "execute function", and "cgi mode" Embperl tests are all successful. In the "mod_perl" mode, even the simple "ascii" test fails. It fails with a seg. fault and a dbx stack trace that looks like this: ap_palloc() at 0xd1179d98 EMBPERL__malloc() at 0xd1178b98 EMBPERL_SetupFileData() at 0xd1177118 EMBPERL_SetupRequest() at 0xd1177764 XS_HTML__Embperl_SetupRequest() at 0xd116fcb8 .() at 0x1004a344 .() at 0x100536f0 .() at 0x1002ff98 perl_call_handler(??, ??, ??) at 0x10113f70 perl_run_stacked_handlers(??, ??, ??) at 0x10113160 perl_handler(??) at 0x10111d38 ap_invoke_handler(0x2011f1f0) at 0x100c42bc process_request_internal(0x2011f1f0) at 0x100f4d6c ap_process_request(0x2011f1f0) at 0x100f648c child_main(0x0) at 0x10002d24 make_child(0x200498e0, 0x0, 0x39363aa3) at 0x100025a0 startup_children(0x2) at 0x1000248c standalone_main(0x4, 0x2ff228c8) at 0x10001928 main(0x4, 0x2ff228c8) at 0x100014b0 To get Embperl.so to successfully build I added "-b erok" to LDDLFLAGS. I also tried '-G' with similar results. Without the modification to LDDLFLAGS I got several "unresolved symbol" errors. I also get similar results with Embperl 1.2b9, Apache 1.3.9, and mod_perl 1.23. BTW, I did not personally compile my perl executable, it is straight from a fileset on the AIX 4.3.3 CD. I have, however, upgraded several modules to their most recent CPAN version. My 'perl -V' output looks like this: Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=aix, osvers=4.3.3.0, archname=aix uname='aix funny 3 4 01716600 ' hint=recommended, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O', gccversion= cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE - qmaxmem=16384' ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE - qmaxmem=16384' stdchar='unsigned char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 alignbytes=8, usemymalloc=n, prototype=define Linker and Libraries: ld='ld', ldflags ='-s' libpth=/lib /usr/lib /usr/ccs/lib libs=-lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lbsd -lPW -lC_r libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='- bE:perl.exp' cccdlflags=' ', lddlflags='-bhalt:4 -bM:SRE - bI:$(PERL_INC)/perl.exp -bE:$(B ASEEXT).exp -b noentry -lc' Characteristics of this binary (from libperl): Built under aix Compiled at Aug 14 1999 08:59:55 @INC: /usr/opt/perl5/lib/5.00503/aix /usr/opt/perl5/lib/5.00503 /usr/opt/perl5/lib/site_perl/5.005/aix /usr/opt/perl5/lib/site_perl/5.005 . -- Greg Estep [EMAIL PROTECTED]
RE: Problem with mod_perl
On Fri, 26 May 2000, Eugene S. Panenko wrote: Hi all, Sorry if it is an incorrect list to ask... I have a strange problem with mod_perl. I've tested mod_perl using a very simple scripts (one of them is attached). The network load is emulated via LAN using a special proggy. The problem is: under load above 20 requests per second after working some time (about 15-30 sec) Apache daemon stopts accepting new connections and blocks forever (without -X option httpd at this moment begin forking until it eats all resources) . I've found that the problem exists only when scripts use modules (tested with CGI v 2.46, IPC::Shareable, our own modules). Test scripts without modules work fine even under load of 200 requests per second. Without knowing too much about your apache config. files, machine specs, etc. I am guessing that your Apache MaxClients is still set at 150 (the out-of-the-box value). When apache receives a request that it cannot immediately handle (all of the pre-forked process are busy) it will fork another one (up to MaxClients). Eventually, you will run out of physical memory and begin to hit your swap space. When this happens, it takes longer to handle a request. That causes more requests to back up in the queue, so apache forks some more processes to handle the load. These new processes increase the amount of swapping that needs to be done, and the situation gets out of control. How many subprocesses you can support depends upon the size of your httpd process's text and data segments. I have seen several mod_perl applications increase the size of an httpd process to over 10 Mbytes. If you set MaxClients to a number that can be safely stored in physical memory (adjusting for the OS and other processes running on the machine, of course) you might eliminate your problem. -- Greg Estep [EMAIL PROTECTED]