Friday, 16 November 2007
|
| Stacked handlers bug unit test Fred Moyer 01:04:23 |
| | Hi Phillipe
Here is the unit test I was telling you about for the bug I found where pushing handlers onto a different phase of the request cycle causes the push to act as a set_handler instead. I dug into the guts of modperl_handler.c looking for what is causing this but I'm still green in dealing with the mod_perl internals.
I'll track you down later and demonstrate this issue.
- Fred
Index: t/hooks/TestHooks/stacked_handlers2.pm =================================================================== --- t/hooks/TestHooks/stacked_handlers2.pm (revision 584452) +++ t/hooks/TestHooks/stacked_handlers2.pm (working copy) @@ -45,6 +45,17 @@ return Apache2::Const::SERVER_ERROR; }
+sub push_fixup_handler { + + my $r = shift; + + $r->push_handlers(PerlFixupHandler => \&ok); + + callback($r); + + return Apache2::Const::OK; +} + sub push_handlers {
my $r = shift; @@ -150,7 +161,8 @@
PerlModule TestHooks::stacked_handlers2
- # all 2 run + # all 3 run + PerlPostReadRequestHandler TestHooks::stacked_handlers2::push_fixup_handler PerlPostReadRequestHandler TestHooks::stacked_handlers2::ok TestHooks::stacked_handlers2::ok
# 1 run, 1 left behind
Index: t/hooks/stacked_handlers2.t =================================================================== --- t/hooks/stacked_handlers2.t (revision 584452) +++ t/hooks/stacked_handlers2.t (working copy) @@ -18,7 +18,7 @@
plan tests => 1;
-my $expected = q!ran 2 PerlPostReadRequestHandler handlers +my $expected = q!ran 3 PerlPostReadRequestHandler handlers ran 1 PerlTransHandler handlers ran 1 PerlMapToStorageHandler handlers ran 4 PerlHeaderParserHandler handlers @@ -26,7 +26,7 @@ ran 2 PerlAuthenHandler handlers ran 2 PerlAuthzHandler handlers ran 1 PerlTypeHandler handlers -ran 4 PerlFixupHandler handlers +ran 3 PerlFixupHandler handlers ran 2 PerlResponseHandler handlers ran 2 PerlOutputFilterHandler handlers!;
|
| | Add comment |
Thursday, 15 November 2007
|
| incorrect apr linking? Geoffrey Young 20:05:37 |
| | hi all
so, I noticed here at apachecon that APR.so is linked against libapr in my /usr/lib from a pre-existing fedora rpm and not the libapr that comes with httpd.
then gozer discovered that httpd now (I don't know when it changed) includes a --with-included-apr configure flag which you need to explicitly pass in order for httpd to use the bundled apr in it's source. otherwise, it uses the system apr.
so I tried it. I compiled httpd with --with-included-apr and verified that the httpd shared objects are using it with ldd. I install httpd.
then I build mod_perl... and see that APR.so is _still_ linked against my system apr and not the /usr/local/apache apr I just installed.
the installed apr-1-config supplies _some_ of the correct linker flags:
$ /usr/local/apache-prefork/bin/apr-1-config --link-ld -L/usr/local/apache-prefork/lib -lapr-1
but it's missing stuff like -rpath that would allow me (us) to link against it without messing with ldconfig.
anyway... I don't know if this is a real problem, one I'm making up, apr-1-config's problem, or whatever. but maybe someone (hi gozer!) who groks this stuff can take a look and try to replicate it?
--Geoff
|
| | Add comment |
|
| newbie question Sourian 09:24:14 |
| | Hi list!
This is my first post, so be nice ;)
I have an Apache server, running on a RedHat 8.0.
I use it for testing various projects I made (I am a student), and I have this issue: In the /var/www/html/ directory I made a symlink ~/work pointing to a directory from /home/userdir/...
My problem is that although I can see the test page when I enter IP into browser, when I write http://xxx.xxx.xxx.xxx/work I get this error message:
Forbidden
You don't have permission to access /work/ on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.0.40 Server at _default_ Port 80
I've studied the manuals for Apache 2.x, but I couldn't figure it out. I've let the server follow symlinks, even if the owner of the folder differ, but the error remain.
Thanks for your time. Sorry if I bothered you.
Regards, Sourian
--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org
|
| | 284 answer | Add comment |
Wednesday, 14 November 2007
|
| about removing the last hash lookup in the interp management code Torsten Foertsch 19:34:48 |
| | Hi Philippe,
in the threading branch this line and the corresponding get in modperl_interp_pool_select() are the last occurrences of hash lookups in the interp management.
(void)apr_pool_userdata_set((void *)r, "MODPERL_R", NULL, r->pool);
I am thinking of removing it. But it requires a extension to the request pool and changes to the httpd.
The idea is to introduce typed pools with extensions. Something like
int type = apr_pool_type_register(void);
int ext = apr_pool_extension_register(int type, size_t size);
apr_pool_t *pool = apr_pool_create_typed_pool(int type);
void *ptr = apr_pool_get_extension(apr_pool_t *pool, int ext);
A call to apr_pool_type_register adds an element to some internal apr_array_header_t and returns the index of the new element.
apr_pool_extension_register gets this index (or pool type) and increments said array element by "size" rounded up to a proper alignment and returns the value of the array element before the increment.
These 2 functions are to be called during initialization.
Then at runtime when a typed pool is needed pool structure is allocated plus at the end of the pool enough space to hold all extensions. To access a registered extension one calls apr_pool_get_extension which returns a pointer to the amount of space registered during initialization.
In the httpd this would mean at init time:
extern int req_pool_type; extern int conn_pool_type; ... static int req_pool_type = apr_pool_type_register(); static int conn_pool_type = apr_pool_type_register(); ...
Then the req pool creation is converted to
req_pool = apr_pool_create_typed_pool( req_pool_type )
In mod_perl this could look like:
INIT:
static my_req_pool_ext = apr_pool_extension_register(req_pool_type, sizeof(void*));
RUNTIME:
void *ptr = apr_pool_get_extension(pool, my_req_pool_ext); *ptr = (void *)r; /* instead of apr_pool_userdata_set */
I hope it is clear what I mean. I think not only mod_perl can benefit these pool extensions. Apache would have to export the main pool types like req_pool_type and conn_pool_type. Modules can add their own pool types.
Does that make sense? What are the odds on getting it into apr and apache?
Torsten
|
| | Add comment |
Monday, 12 November 2007
|
| Anybody going to be @ ApacheCon US 2007 Atlanta? Philippe M. Chiasson 23:15:45 |
| | It's starting tomorrow, and I am going to be there.
Anybody else will be around and want to connect, just lemme know by email.
There is also a mod_perl BOF scheduled on Thursday ( see http://wiki.apache.org/apachecon/BirdsOfaFeatherUs07 for more details)
In any case, see you all there!
-- Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5 http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
|
| | 2 answer | Add comment |
Thursday, 8 November 2007
|
| (unknown) Ketvin 19:04:59 |
| | ](¥Ê' ¦ºxj?¨'gLj)Rq©çz²'~æj?¨ù^jÇ¢{ZrÛax~梷¢ú+«b¢uÒX¢pk§ÆÒvpatÆ¢'w«§vÚyÉ^juÌj)Rq©çz±k¢i¶ø§²)brÜ¢i²]*ZxiçZ륧!z×´ÿ]4ÓóR¹¸ÞrÛ¬z»!¶Ú]ºZµçè®jk¡¹^
?1¥Íа4(4(4)$
´É¹¹¥¹¡ÑÑ?¸À°Á°Ô´´À°µåÍŰ´Ì¸?̸$´ÕÍ¥¹¡Ñµ°½´Ñ¼ÕÁ
Ñ¡¥¹Ì°Ñ¡½É´
±±ÌÍÉ¥Áа¹¥Ð¥¹Ù¤µµåÍŰ
¹ÕÁ
ÑÑ¡µåÍŰ
Ñ
͸4(4)I¹±ä¤´
¥¹Áɽ±´Ý¥ÑÕÁ
Ñ¥¹¸]¡$¡
Ù?À¥ÑµÌ½¸Ñ¡½É´°Ñ¡¸Ñ¡ÕÁ
Ñ¥¹¥ÌÙÉä
Íа½¹±¥¬½¸Ñ¡ÍÕµ¥ÐÕÑѽ¸°Ñ¡±¥ÍÐÝ
ÌÕÁ
Ñ
н¹¸4)Õаݡ¸$
¹µ½É¥´°?Å¥Ñ̰½¹¥¥¹½¸ÕÁ
Ѱ¥Ðѽ½¬½ÉÙ?Ѽ±½
¸¹©ÕÍС
±Ñ
ÐÑ¡Éݥѽ±±½Ý¥¹µÍÍ
¸
Á
¡½¥±¸4(4)m]5
?ÌÄÄ?èÐÀè?Ü?ÀÀÑtmÉɽÉtm±¥¹ÐÄä?¸Ä?¸?¸t?ÀÔÀÜ¥Q¡Ñ¥µ½ÕÐÍÁ¥¥¡
ÌáÁ¥Éè
Á}½¹Ñ¹Ñ}±¹Ñ¡}¥±Ñ?è
Á}ÕÑ}É
¤
¥±ÉÉ?è¡ÑÑÀè¼¼Ää?¸Ä?¸?¸Ä½
µ¥¸½ÕÁ
ѹ¤4(4)]¡¤Éµ½Ù½¹¥Ñ´°½µ?À¥ÑµÌ
¸°Ñ¡¸ÑÕÁ
Ñ¥¹½µÙÉä
Íи4(4)$ÍÕÍÁÐͽµÑ¡¥¹Ýɽ¹Ý¥ÑÑ¡½¹¥±°Ð¤©ÕÍн¸Ð¹½ÜÝ¡¥½¹¼¡¬¸¸
¹å½ä¡±Àµ½ÐüüQ!
¹Ì4(4(4(4(4(4(4(4(4(4((¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨½¹¥Ñ¥
±¥Ñä9½Ñ¥¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨)Q¡¥ÌµÍÍ
½¹Ñ
¥¹Ì½¹¥¹Ñ¥
°¥¹½Éµ
Ñ¥½¸
¹¥Ì¥¹Ñ¹½¹±ä½?)Ñ¡¥¥Ù¥Õ
°
µ¸%?å½Ô
ɹ½ÐÑ¡¹
µ
ÉÍÍå½ÔÍ¡½Õ±)¹½Ð¥Íµ¥¹
Ѱ¥ÍÑÉ¥Õѽ?½Á䡥̵µ
¥¸A±
͹½Ñ¥äÑ¡)͹?¥µ¥
ѱääµµ
¥°¥?å½Ô¡
É¥ÙÑ¡¥Ìµµ¥°ä)µ¥ÍÑ
¹±ÑÑ¡¥Ìµµ
¥°É´å½Õ?ÍåÑ´¸(¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨( |
| | 766 answers | Add comment |
Tuesday, 6 November 2007
|
| [Fwd: [rt.cpan.org #30061] $r->pnotes stores aliases not copies so
is subject to action at a dis Geoffrey Young 19:56:44 |
| | heh, didn't this just come up?
gozer: I did find the documentation, and I posted it to the rt ticket.
I guess we don't have a historical way of managing rt tickets, but I'm tempted to resolve this one as "rejected" (though the thought of rejecting tim isn't a pleasant one ;)
--Geoff
-------- Original Message -------- Subject: [rt.cpan.org #30061] $r->pnotes stores aliases not copies so is subject to action at a distance Date: Wed, 17 Oct 2007 10:58:22 -0400 From: Tim_Bunce via RT <bug-mod_perl@rt.cpan.org> Reply-To: bug-mod_perl@rt.cpan.org To: undisclosed-recipients:; References: <RT-Ticket-30061@rt.cpan.org>
Wed Oct 17 10:57:58 2007: Request 30061 was acted upon. Transaction: Ticket created by TIMB Queue: mod_perl Subject: $r->pnotes stores aliases not copies so is subject to action at a distance Broken in: (no value) Severity: Important Owner: Nobody Requestors: TIMB@cpan.org Status: new Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=30061 >
This code:
$x = 42; $r->pnotes( 'foo', $x ); ++$x; warn $r->pnotes( 'foo', $x );
should print the value that was stored, 42, but it actually prints 43!
The value stored has been modified by action at a distance. *Not good*
This can cause some very hard to debug problems, where values stored in pnotes change for no readily apparent reason. I know, I've spent way too long doing just that before I identified this as the cause.
A workaround for affected code is to assign to a temporary variable so the alias taken by pnotes isn't an alias for the orginal value:
$r->pnotes( 'foo', my $tmp = $x )
The minimal fix is to change:
hv_store(cfg->pnotes, key, len, SvREFCNT_inc(val), FALSE);
in pnotes in src/modules/perl/Apache.xs to something more like
SV **svp = hv_fetch(cfg->pnotes, key, len, TRUE); sv_setsv(*svp, val);
with a little more work you could eliminate the earlier hv_exists and hv_fetch by doing
SV **svp = hv_fetch(cfg->pnotes, key, len, (val) ? TRUE : FALSE);
and working with svp.
Tim Bunce.
|
| | 6 answers | Add comment |
Wednesday, 31 October 2007
|
| [PATCH] rand.c for win32 Xi Wang 00:10:31 |
| | Hi,
In apr/misc/win32/rand.c, it failed to compile here with the error: undeclared identifier 'HCRYPTPROV', for lack of the definition of _WIN32_WINNT in wincrypt.h. Reordering the headers (wincrypt.h after apr.h) would be OK.
-Xi
Index: rand.c =================================================================== --- rand.c (revision 447310) +++ rand.c (working copy) @@ -14,15 +14,14 @@ * limitations under the License. */
-#include <windows.h> -#include <wincrypt.h> #include "apr.h" #include "apr_private.h" #include "apr_general.h" #include "apr_portable.h" #include "apr_arch_misc.h" +#include <windows.h> +#include <wincrypt.h>
- APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, apr_size_t length) {
|
| | 2 answer | Add comment |
Tuesday, 30 October 2007
|
| trying modperl with perl 5.10.0 Torsten Foertsch 21:07:55 |
| | Hi,
while trying modperl with perl 5.10.0 I got 2 nice coredumps in the init code.
1) this is with perfork mpm:
#0 0x08601de4 in ?? () #1 0x407dda91 in Perl_mg_free (my_perl=0x85fb4f0, sv=0x85ffbdc) at mg.c:490 #2 0x4085a5ba in Perl_sv_clear (my_perl=0x85fb4f0, sv=0x85ffbdc) at sv.c:5154 #3 0x4085b5b6 in Perl_sv_free2 (my_perl=0x85fb4f0, sv=0x85ffbdc) at sv.c:5363 #4 0x4085b4e3 in Perl_sv_free (my_perl=0x85fb4f0, sv=0x85ffbdc) at sv.c:5342 #5 0x40808ce7 in perl_destruct (my_perl=0x85fb4f0) at perl.c:1013 #6 0x406bbe58 in modperl_perl_destruct (perl=0x85fb4f0) at modperl_perl.c:176 #7 0x40691fa6 in modperl_interp_destroy (interp=0x8616608) at modperl_interp.c:146 #8 0x406921a4 in modperl_interp_pool_destroy (data=0x85f54a8) at modperl_interp.c:202 #9 0x401730d0 in run_cleanups (cref=0x85f7508) at memory/unix/apr_pools.c:2034 #10 0x40172599 in apr_pool_destroy (pool=0x85f74f8) at memory/unix/apr_pools.c:727 #11 0x401724ac in apr_pool_clear (pool=0x80b90a8) at memory/unix/apr_pools.c:686 #12 0x0806734d in main (argc=158288056, argv=0x8b10c40) at main.c:680
2) and with worker mpm
#0 0x4085ea3a in Perl_sv_2mortal (my_perl=0x982dd90, sv=0xa0d5aec) at sv.c:6961 #1 0x407d4770 in Perl_mg_get (my_perl=0x982dd90, sv=0xa0d5aec) at mg.c:191 #2 0x4083a17b in Perl_sv_2pv_flags (my_perl=0x982dd90, sv=0xa0d5aec, lp=0xbf920a3c, flags=2) at sv.c:2584 #3 0x40862fa7 in Perl_sv_pvn_force_flags (my_perl=0x982dd90, sv=0xa0d5aec, lp=0xbf920c44, flags=2) at sv.c:7638 #4 0x408674d4 in Perl_sv_vcatpvfn (my_perl=0x982dd90, sv=0xa0d5aec, pat=0x40a1cfa3 "panic: memory wrap", patlen=18, args=0xbf920f3c, svargs=0x0, svmax=0, maybe_tainted=0x0) at sv.c:8473 #5 0x40866f87 in Perl_sv_vsetpvfn (my_perl=0x982dd90, sv=0xa0d5aec, pat=0x40a1cfa3 "panic: memory wrap", patlen=18, args=0xbf920f3c, svargs=0x0, svmax=0, maybe_tainted=0x0) at sv.c:8378 #6 0x407c7851 in Perl_vmess (my_perl=0x982dd90, pat=0x40a1cfa3 "panic: memory wrap", args=0xbf920f3c) at util.c:1161 #7 0x407c999b in S_vdie_croak_common (my_perl=0x982dd90, pat=0x40a1cfa3 "panic: memory wrap", args=0xbf920f3c, msglen=0xbf920efc, utf8=0xbf920ef8) at util.c:1302 #8 0x407ca165 in Perl_vcroak (my_perl=0x982dd90, pat=0x40a1cfa3 "panic: memory wrap", args=0xbf920f3c) at util.c:1383 #9 0x407ca501 in Perl_croak_nocontext (pat=0x40a1cfa3 "panic: memory wrap") at util.c:1404 #10 0x408b5935 in Perl_tmps_grow (my_perl=0x982dd90, n=128) at scope.c:141 #11 0x4085ea16 in Perl_sv_2mortal (my_perl=0x982dd90, sv=0xa0d5aec) at sv.c:6960 #12 0x407d4770 in Perl_mg_get (my_perl=0x982dd90, sv=0xa0d5aec) at mg.c:191 #13 0x4083a17b in Perl_sv_2pv_flags (my_perl=0x982dd90, sv=0xa0d5aec, lp=0xbf92117c, flags=2) at sv.c:2584 #14 0x40862fa7 in Perl_sv_pvn_force_flags (my_perl=0x982dd90, sv=0xa0d5aec, lp=0xbf921384, flags=2) at sv.c:7638 #15 0x408674d4 in Perl_sv_vcatpvfn (my_perl=0x982dd90, sv=0xa0d5aec, pat=0x409ef64c "Bizarre SvTYPE [%ld]", patlen=20, args=0xbf921680, svargs=0x0, svmax=0, maybe_tainted=0x0) at sv.c:8473 #16 0x40866f87 in Perl_sv_vsetpvfn (my_perl=0x982dd90, sv=0xa0d5aec, pat=0x409ef64c "Bizarre SvTYPE [%ld]", patlen=20, args=0xbf921680, svargs=0x0, svmax=0, maybe_tainted=0x0) at sv.c:8378 #17 0x407c7851 in Perl_vmess (my_perl=0x982dd90, pat=0x409ef64c "Bizarre SvTYPE [%ld]", args=0xbf921680) at util.c:1161 #18 0x407c999b in S_vdie_croak_common (my_perl=0x982dd90, pat=0x409ef64c "Bizarre SvTYPE [%ld]", args=0xbf921680, msglen=0xbf92163c, utf8=0xbf921638) at util.c:1302 #19 0x407ca165 in Perl_vcroak (my_perl=0x982dd90, pat=0x409ef64c "Bizarre SvTYPE [%ld]", args=0xbf921680) at util.c:1383 #20 0x407ca532 in Perl_croak (my_perl=0x982dd90, pat=0x409ef64c "Bizarre SvTYPE [%ld]") at util.c:1435 #21 0x4086ed47 in Perl_sv_dup (my_perl=0x982dd90, sstr=0x8499418, param=0xbf921ba4) at sv.c:10083 #22 0x4086d06c in Perl_mg_dup (my_perl=0x982dd90, mg=0x80c0b18, param=0xbf921ba4) at sv.c:9774 #23 0x4086f1cd in Perl_sv_dup (my_perl=0x982dd90, sstr=0x85fe784, param=0xbf921ba4) at sv.c:10135 #24 0x408757de in perl_clone (proto_perl=0x85fa098, flags=2) at sv.c:11255 #25 0x40689d6a in modperl_interp_new (mip=0x85f4050, perl=0x85fa098) at modperl_interp.c:80 #26 0x4068a208 in interp_pool_grow (tipool=0x8656f20, data=0x85f4050) at modperl_interp.c:212 #27 0x4068b4f2 in modperl_tipool_init (tipool=0x8656f20) at modperl_tipool.c:187 #28 0x40688888 in modperl_init_clones (s=0x80c0b18, p=0x80bb0a8) at mod_perl.c:528 #29 0x40688db2 in modperl_hook_post_config_last (pconf=0x80bb0a8, plog=0x80e9160, ptemp=0x80eb168, s=0x80c0b18) at mod_perl.c:725 #30 0x0807da50 in ap_run_post_config (pconf=0x80bb0a8, plog=0x80e9160, ptemp=0x80eb168, s=0x80c0b18) at config.c:91 #31 0x0806746f in main (argc=Cannot access memory at address 0xabababab ) at main.c:670
$ perl -V Summary of my perl5 (revision 5 version 10 subversion 0 patch 32199) configuration: Platform: osname=linux, osvers=2.6.22.9-0.4-default, archname=i686-linux-thread-multi uname='linux opi 2.6.22.9-0.4-default #1 smp 20071005 21:32:04 utc i686 i686 i386 gnulinux ' config_args='-des -Doptimize=-g -Dcccdlflags=-fPIC -Dusethreads -Duseshrplib -Uusemymalloc' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.2.1 (SUSE Linux)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=/lib/libc-2.6.1.so, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.6.1' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/local/lib/perl5/5.10.0/i686-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared -g -L/usr/local/lib'
Characteristics of this binary (from libperl): Compile-time options: DEBUGGING MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Locally applied patches: DEVEL Built under linux Compiled at Oct 29 2007 09:55:06 %ENV: PERL5LIB="/opt/apache22-worker/mod_perl" @INC: /opt/apache22-worker/mod_perl /usr/local/lib/perl5/5.10.0/i686-linux-thread-multi /usr/local/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i686-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 .
|
| | Add comment |
|
| Thanks Gman 18:20:12 |
| | bitchen it works now, i don't know what i missed but thanks to everyone this has been bugging me for over a month.
"Gman": The Local Trouble Maker Owner: The Edge Internet Radio
--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org
|
| | 88 answers | Add comment |
Saturday, 27 October 2007
|
| [Fwd: [rt.cpan.org #30300] breakage on perl built with -Duserelocateableinc] Geoffrey Young 20:27:17 |
| |
-------- Original Message -------- Subject: [rt.cpan.org #30300] breakage on perl built with -Duserelocateableinc Date: Sat, 27 Oct 2007 11:27:17 -0400 From: Andreas Koenig via RT <bug-mod_perl@rt.cpan.org> Reply-To: bug-mod_perl@rt.cpan.org To: undisclosed-recipients:; References: <RT-Ticket-30300@rt.cpan.org>
Sat Oct 27 11:27:16 2007: Request 30300 was acted upon. Transaction: Ticket created by ANDK Queue: mod_perl Subject: breakage on perl built with -Duserelocateableinc Broken in: 1.30 Severity: Normal Owner: Nobody Requestors: ANDK@cpan.org Status: new Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=30300 >
Just want to get the word out to all interested parties and victims of this "bug".
I built my recent perls with the option -Drelocateableinc. This option is only available with upcoming 5.10 and it allows the users to move their perls around in the filesystem together with their libraries.
But with this option turned on mod_perl-1.30 is unable to start a server. It spits out the amazing error message:
Can't locate lib.pm in @INC (@INC contains: ...
I have no idea how wide spread the use of relocateableinc will become and if this is a relevant bug or not. Just want to let you know that this needs to be addressed somehow.
Thanks,
|
| | Add comment |
Tuesday, 23 October 2007
|
| [Fwd: Cron <perlwww@minotaur> /home/perlwww/apache.org/modperl-docs/bin/site_build_index]
(fw Fred Moyer 23:12:26 |
| | I'm guessing that this has something to do with the recent systems upgrade? Any ideas on who to contact to get this fixed? I don't have sudo on minotaur.
- Fred
---------- Forwarded message ---------- Date: Tue, 23 Oct 2007 12:10:06 -0700 (PDT) From: Fred Moyer <fred@redhotpenguin.com> To: fred@taperfriendlymusic.org Subject: [Fwd: Cron <perlwww@minotaur> /home/perlwww/apache.org/modperl-docs/bin/site_build_index]
---------------------------- Original Message ---------------------------- Subject: Cron <perlwww@minotaur> /home/perlwww/apache.org/modperl-docs/bin/site_build_index From: "Cron Daemon" <perlwww@apache.org> Date: Mon, October 22, 2007 11:15 pm To: docs-dev@perl.apache.org --------------------------------------------------------------------------
Can't load '/home/perlwww/lib/perl5/site_perl/auto/Data/Dumper/Dumper.so' for module Data::Dumper: /home/perlwww/lib/perl5/site_perl/auto/Data/Dumper/Dumper.so: unsupported file layout at /usr/local/lib/perl5/5.8.8/mach/XSLoader.pm line 70. at /home/perlwww/lib/perl5/site_perl/Data/Dumper.pm line 27 Compilation failed in require at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/../lib/DocSet/Util.pm line 11. BEGIN failed--compilation aborted at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/../lib/DocSet/Util.pm line 11. Compilation failed in require at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/../lib/DocSet/RunTime.pm line 12. BEGIN failed--compilation aborted at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/../lib/DocSet/RunTime.pm line 12. Compilation failed in require at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/docset_build line 40. BEGIN failed--compilation aborted at /x1/home/perlwww/apache.org/modperl-docs-svn/bin/docset_build line 40. Can't load '/home/perlwww/lib/perl5/site_perl/auto/HTML/Parser/Parser.so' for module HTML::Parser: /home/perlwww/lib/perl5/site_perl/auto/HTML/Parser/Parser.so: unsupported file layout at /usr/local/lib/perl5/5.8.8/mach/XSLoader.pm line 70. at /home/perlwww/lib/perl5/site_perl/HTML/Parser.pm line 17 Compilation failed in require at /home/perlwww/lib/perl5/site_perl/HTML/LinkExtor.pm line 5. Compilation failed in require at ./spider.pl line 21. BEGIN failed--compilation aborted at ./spider.pl line 21. err: No unique words indexed! .
--------------------------------------------------------------------- To unsubscribe, e-mail: docs-dev-unsubscribe@perl.apache.org For additional commands, e-mail: docs-dev-help@perl.apache.org
|
| | Add comment |
Wednesday, 17 October 2007
|
| cgi problem Steve Remund 15:30:38 |
| | This is my first post to the list, so be kind!
I have 2 different AIX boxes running the same OS level. On the older one I'm running Apache 1.3.4 and on the newer one I just downloaded 1.3.26. I had several CGI routines that worked fine on the older box, but I can't get them to work on the new one. This is a perl script I use to call an external program which then displays an HTML page. The program builds the page dynamically.
#!/usr/local/bin/perl/usr/local/bin/perl $req = $ENV{"QUERY_STRING"}; open(THEPROG, "| /u1/uv/bin/uv VENDNAME"); print THEPROG $req, "\n"; close(THEPROG);
When I run this on the new machine, I am getting "bad header" messages in the error log. Here's an example:
[Fri Dec 20 14:46:58 2002] [error] [client 192.168.129.214] malformed header fro m script. Bad header=<html>: /usr/local/apache/cgi-bin/srtest [Fri Dec 20 14:51:40 2002] [error] [client 192.168.129.214] malformed header fro m script. Bad header=<HTML>: /usr/local/apache/cgi-bin/HTML.TEST
I can't figure out why my headers are bad. The config files are a little different on the newer version, but as far as I know they are set up the same. I have RTFM but can't figure it out.
Help! TIA
--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org
|
| | 24 answer | Add comment |
Sunday, 14 October 2007
|
| Apache::Test - cannot find module 'mod_perl.c' Fred Moyer 06:48:00 |
| | I feel somewhat embarrassed to ask this question, but I've run into this issue intermittently and haven't been able to find a deterministic reason why this is happening. I've been hacking on the sameinterp changes for Apache::Reload and I can't get Apache::Test to load mod_perl.so during 'make test'. I've poked around the guts of Apache::Test, added debugging prints where appropriate, and still no luck.
Here's a summary of what's going on - hopefully I am doing something dumb which is obvious to everyone but me.
phred@harpua Apache-Test $ ls /home/phred/dev/sl/httpd2/modules/ httpd.exp mod_perl.so
phred@harpua Apache-Test $ perldoc -l mod_perl2.pm /home/phred/dev/perl/lib/site_perl/5.8.8/i686-linux/mod_perl2.pm
phred@harpua Apache-Test $ make test make[1]: Entering directory `/home/phred/dev/svn/modperl/Apache-Test/Apache-TestItSelf' make[1]: Leaving directory `/home/phred/dev/svn/modperl/Apache-Test/Apache-TestItSelf' /home/phred/dev/perl/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -clean setting ulimit to allow core files ulimit -c unlimited; /home/phred/dev/perl/bin/perl /home/phred/dev/svn/modperl/Apache-Test/t/TEST -clean APACHE_TEST_GROUP= APACHE_TEST_HTTPD=/home/phred/dev/sl/httpd2/bin/httpd APACHE_TEST_PORT= APACHE_TEST_USER= APACHE_TEST_APXS=/home/phred/dev/sl/httpd2/bin/apxs \ /home/phred/dev/perl/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -bugreport -verbose=0 setting ulimit to allow core files ulimit -c unlimited; /home/phred/dev/perl/bin/perl /home/phred/dev/svn/modperl/Apache-Test/t/TEST -bugreport -verbose=0 looking for module mod_mime.so looking for module mod_alias.so /home/phred/dev/sl/httpd2/bin/httpd -d /home/phred/dev/svn/modperl/Apache-Test/t -f /home/phred/dev/svn/modperl/Apache-Test/t/conf/httpd.conf -D APACHE2 using Apache/2.2.4 (prefork MPM) waiting 60 seconds for server to start: ok (waited 0 secs) server localhost.localdomain:8529 started adding source lib /home/phred/dev/svn/modperl/Apache-Test/lib to @INC adding source lib /home/phred/dev/svn/modperl/Apache-Test/lib to @INC adding source lib /home/phred/dev/svn/modperl/Apache-Test/lib to @INC adding source lib /home/phred/dev/svn/modperl/Apache-Test/lib to @INC t/alltest/all............skipped all skipped: testing all.t t/alltest2/all...........skipped all skipped: testing more than one all.t t/bad_coding.............ok
t/cookies................skipped all skipped: cannot find one of cgi or cgid t/more/all...............skipped all skipped: cannot find module 'mod_perl.c' t/next_available_port....skipped all skipped: cannot find one of cgi or cgid, cannot find module 'mod_env.c' t/ping...................ok
t/redirect...............skipped all skipped: cannot find module 'mod_alias.c' t/request................ok
t/sameinterp.............skipped all skipped: cannot find module 'mod_perl.c' All tests successful, 7 tests skipped. Files=10, Tests=13, 4 wallclock secs ( 3.73 cusr + 0.41 csys = 4.14 CPU)
|
| | 2 answer | Add comment |
Saturday, 13 October 2007
|
| possible pnotes refcounting bug ? Torsten Foertsch 10:48:25 |
| | Hi,
this is a snippet from modperl_util.c:modperl_pnotes()
if (key) { STRLEN len; char *k = SvPV(key, len);
if (val) { retval = *hv_store(*pnotes, k, len, SvREFCNT_inc(val), 0); } else if (hv_exists(*pnotes, k, len)) { retval = *hv_fetch(*pnotes, k, len, FALSE); } } else { retval = newRV_inc((SV *)*pnotes); }
return retval ? SvREFCNT_inc(retval) : &PL_sv_undef;
I am wondering whether the REFCNT is always right. *pnotes is a HV. If the function is called without a key argument the else branch newRV_inc increments the REFCNT of the HV, right? Then the return statement in the last line increments it again? Am I wrong?
Torsten
|
| | 4 answer | Add comment |
Thursday, 11 October 2007
|
| [suggestion] Change branching instructions to use svnmerge Philippe M. Chiasson 19:26:43 |
| | In preparing for creating a branch for Torsten's threading work, I looked at our BRANCHING document, and it's associated script build/svn.remerge.
Instead, I'd like to push forward a great svn merge tool, svnmerge[1]
It's nice, simple, and makes managing branches a breeze. I've been using it at $work, and it's very nice. I am volounteering to update the BRANCHING document to reflect how to use svnmerge instead, but for the curious, it's something like:
$ trunk/> svnmerge avail 1234: Added foo bar 1245: Delete baz $ trunk/> svnmerge merge -r 1234, 1245 $ trunk/> svn ci -m'merged bla bla from branch' $ trunk/> svnmerge avail $ trunk/>
It basically keeps track of what has been merged and where, as well as what's available for merging. I hate to say it, but somewhat like Perforce for those in the know
1: http://www.orcaware.com/svn/wiki/Svnmerge.py
------------------------------------------------------------------------ Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5 http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
|
| | 3 answer | Add comment |
Wednesday, 10 October 2007
|
| svn write access Torsten Foertsch 23:36:19 |
| | Hi,
I have been working now for some time on that threading / interpreter stuff. The whole patch is quite big by now. Would it be possible to create a new branch in the svn for that and give me write permission? Or simply create a new branch where the stuff can be checked in by someone else?
Thanks, Torsten
|
| | 1 answer | Add comment |
|
| xs maps Torsten Foertsch 15:47:54 |
| | Hi,
can someone shed some light on the first characters in *_structures.map files? For example in
<apr_bucket_type_t> < name - num_func ... </apr_bucket_type_t>
<apr_bucket>
link < type ... </apr_bucket>
<apr_bucket_brigade> ~ pool ... </apr_bucket_brigade> ... <apr_uri_t> & scheme hostinfo ... - dns_resolved </apr_uri_t>
What do these [ $%><~-?&!] mean?
$ perl -MData::Dumper -ne '/^(.)\s/ and $h{$1}++; END{print Dumper(\%h)}' *_structures.map $VAR1 = { '$' => 10, ' ' => 134, '%' => 6, '#' => 6, '>' => 24, '~' => 14, '-' => 48, '?' => 2, '&' => 14, '<' => 81, '!' => 12 };
Torsten
|
| | 2 answer | Add comment |
Monday, 8 October 2007
|
| Re: Apache2::SizeLimit & Linux::Smaps on x86_64 Torsten Foertsch 10:23:39 |
| | On Sunday 07 October 2007 23:29, Max Kanat-Alexander wrote:
So it looks like it works fine for what smem is doing, but it somehow doesn't work right for Apache2::SizeLimit. In your modperl environment "use warnings FATAL=>qw/all/" is active. Hence, the portable warning is turned into a portable error. That's all.
Torsten
|
| | Add comment |
Sunday, 7 October 2007
|
| Re: mod_rewrite is working strangely while using mod_perl Geoffrey Young 18:59:46 |
| |
Marco Bretschneider wrote:
Hi, I reported a bug that seems to be related to mod_rewrite of apache. It turns out, that the problem only occurs while using mod_perl. Note, that everything else is working fine with mod_perl. Anyway I'm not quite sure where this bug belongs to (mod_perl or mod_rewrite). I was asked to report a bug to your list too. Please have a look at please explicitly add
+SetupEnv
to your PerlOptions under /folder
fwiw, I just added a test for this to the mod_perl svn sources - it's not an .htaccess-based test but it does show env variables coming through.
for the most part, the env communication between mod_rewrite and anyone else (mod_perl, mod_cgi, whomever) is pretty simple and clear - mod_rewrite populates the subprocess_env table, then mod_cgi or mod_perl calls a core apache API to populate %ENV at content-generation time.
so, I'd like you to try a few things...
first, please verify that this is not a problem with mod_cgi as well. that is, take your same setup, but use
SetHandler cgi-script
for your test and see if the problem persists. if mod_cgi does the right thing then I'll look into it further.
--Geoff
|
| | 2 answer | Add comment |
Friday, 5 October 2007
|
| Segmentation fault Grant 11:59:48 |
| | I'm getting some entries like this in my error_log:
[Tue Sep 28 06:57:40 2004] [notice] child pid 25997 exit signal Segmentation fault (11)
Can anyone give me any advice on where to start with this?
- Grant
--------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org
|
| | 51 answer | Add comment |
Monday, 1 October 2007
|
| Please Help Guest 11:24:21 |
| | Greetings, I'm trying to get SSL working on Apache 1.3 on a Sun box - but everytime I run the config test it tells either something misspelled - which it isn't i've checked that - or that the module isn't loaded but in the httpd.conf it is define <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule>
can anyone give me any advice? THanks, Bobbie
|
| | 116 answers | Add comment |
Sunday, 30 September 2007
|
| Seeking (Mod)Perl Wisdom Torsten Foertsch 10:07:57 |
| | Hi,
the a pointer to current interpreter is somehow written to the Perl interpreter itself by this macro:
#ifndef HvPMROOT # if MP_PERL_VERSION_AT_LEAST(5, 9, 5) #define MP_THX_INTERP_SET(thx, interp) \ ((XPVMG*)SvANY(*Perl_Imodglobal_ptr(thx)))->xmg_u.xmg_magic = (MAGIC*)interp # else #define MP_THX_INTERP_SET(thx, interp) \ ((XPVMG*)SvANY(*Perl_Imodglobal_ptr(thx)))->xmg_magic = (MAGIC*)interp # endif #else #define MP_THX_INTERP_SET(thx, interp) \ HvPMROOT(*Perl_Imodglobal_ptr(thx)) = (PMOP*)interp #endif
What is HvPMROOT and what is Perl_Imodglobal_ptr? Are these normal Perl variables that can also be accessed from Perl level? If not why are here special variables used? Can that not be something like $Modperl::CurrentInterpreter or so?
Torsten
|
| | 1 answer | Add comment |
Thursday, 27 September 2007
|
| Help ! Kaveh Ghahremani 23:06:49 |
| | I have put together Apache 2.0.35, and the Tomcat 4.0.3 and JBoss 3.0RC1 package and tried to integrate them. Everything seems to be working well and JBoss/Tomcat starts with no errors, and Apache gives a Syntax OK when I do a configtest.
But when I start Apache, I get the following error in the JBoss log which seems to be related to the Tomcat engine:
16:04:08,933 INFO [Server] JBoss (MX MicroKernel) [3.0.0RC1 Date:200204150356] Started in 0m:41s:199ms 16:05:01,361 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConnector] Connection from /127.0.0.1:32791 to /127.0.0.1:8008 16:05:01,388 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConnector] Connection from /127.0.0.1:32792 to /127.0.0.1:8008 16:05:01,392 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConnector] Connection from /127.0.0.1:32793 to /127.0.0.1:8008 16:05:01,397 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConnector] Connection from /127.0.0.1:32794 to /127.0.0.1:8008 16:05:01,399 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConnector] Connection from /127.0.0.1:32795 to /127.0.0.1:8008 16:05:01,431 INFO [Engine] WarpHost[kaveman.ath.cx]: Installing web application at context path /examples from URL file:/usr/local/jboss-3.0.0RC1_tomcat-4.0.3/catalina/webapps/examples 16:05:01,449 INFO [Engine] WebappLoader[/examples]: Deploying class repositories to work directory /usr/local/jboss-3.0.0RC1_tomcat-4.0.3/catalina/work/kaveman.ath.cx/exam ples 16:05:01,466 INFO [Engine] StandardManager[/examples]: Seeding random number generator class java.security.SecureRandom 16:05:01,468 INFO [Engine] StandardManager[/examples]: Seeding of random number generator has been completed 16:05:01,611 INFO [Engine] ContextConfig[/examples]: Added certificates -> request attribute Valve 16:05:01,612 INFO [Engine] ContextConfig[/examples]: Configured an authenticator for method FORM 16:05:01,636 ERROR [Engine] StandardContext[/examples]: Error configuring application listener of class listeners.ContextListener java.lang.NoClassDefFoundError: javax/servlet/ServletContextAttributeListener at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:509) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappCla ssLoader.java:1631) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader .java:926) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader .java:1360) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader .java:1243) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j ava:3142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3378 ) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:785) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:454) at org.apache.catalina.core.StandardHost.install(StandardHost.java:714) at org.apache.catalina.connector.warp.WarpConfigurationHandler.deploy(WarpC onfigurationHandler.java:313) at org.apache.catalina.connector.warp.WarpConfigurationHandler.handle(WarpC onfigurationHandler.java:117) at org.apache.catalina.connector.warp.WarpConnection.run(WarpConnection.jav a:189) at java.lang.Thread.run(Thread.java:536) 16:05:01,643 ERROR [Engine] StandardContext[/examples]: Error configuring application listener of class listeners.SessionListener java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:509) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappCla ssLoader.java:1631) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader .java:926) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader .java:1360) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader .java:1243) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j ava:3142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3378 ) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:785) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:454) at org.apache.catalina.core.StandardHost.install(StandardHost.java:714) at org.apache.catalina.connector.warp.WarpConfigurationHandler.deploy(WarpC onfigurationHandler.java:313) at org.apache.catalina.connector.warp.WarpConfigurationHandler.handle(WarpC onfigurationHandler.java:117) at org.apache.catalina.connector.warp.WarpConnection.run(WarpConnection.jav a:189) at java.lang.Thread.run(Thread.java:536) 16:05:01,644 INFO [Engine] StandardContext[/examples]: Skipped installing application listeners due to previous error(s) 16:05:01,645 INFO [Engine] StandardContext[/examples]: Context startup failed due to previous errors 16:05:01,692 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConfigurationHandler] Filter mappings (0) 16:05:01,693 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConfigurationHandler] Filter mappings (0) 16:05:01,693 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConfigurationHandler] Filter mappings (0) 16:05:01,694 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConfigurationHandler] Filter mappings (0) 16:05:01,695 ERROR [Engine] [org.apache.catalina.connector.warp.WarpConfigurationHandler] Filter mappings (0)
Can anyone help me with this ?
Thanks in advance
|
| | 538 answers | Add comment |
|
| What is PERL_SET_CONTEXT for? Torsten Foertsch 16:28:35 |
| | Hi,
in modperl_callback.c I have found this piece of code:
if (r || c) { interp = modperl_interp_select(r, c, s); aTHX = interp->perl; } else { /* Child{Init,Exit}, OpenLogs */ aTHX = scfg->mip->parent->perl; PERL_SET_CONTEXT(aTHX); }
"man perlembed" says:
Note the calls to PERL_SET_CONTEXT(). These are necessary to initial ize the global state that tracks which interpreter is the "current" one on the particular process or thread that may be running it. It should always be used if you have more than one interpreter and are making perl API calls on both interpreters in an interleaved fashion.
PERL_SET_CONTEXT(interp) should also be called whenever "interp" is used by a thread that did not create it (using either perl_alloc(), or the more esoteric perl_clone()).
So, is it an error not to call PERL_SET_CONTEXT in the if-branch?
Shouldn't PERL_SET_CONTEXT be called every time an interpreter is selected?
Thanks, Torsten
|
| | 2 answer | Add comment |
|