You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@perl.apache.org by "Philippe M. Chiasson" <go...@cpan.org> on 2003/05/19 05:34:30 UTC
[Patch] MP_GTOP=1
# $Id: gtop.patch,v 1.1 2003/05/19 03:29:19 gozer Exp $
Recently tried building with MP_GTOP=1 and noticed that things don't quite
work for me anymore. As per gcc documentation __func__ and __FUNCTION__ should not
be used in string concatenation. Also in modperl_imterp, encountered some
scfg without a valid gtop structure, so create it if not already there.
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.170
diff -u -b -B -I$Id -r1.170 mod_perl.c
--- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
+++ src/modules/perl/mod_perl.c 19 May 2003 03:25:48 -0000
@@ -147,8 +147,10 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
+ if(!scfg->gtop) {
scfg->gtop = modperl_gtop_new(p);
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
+ }
+ modperl_gtop_do_proc_mem_before(MP_FUNC);
);
#endif
@@ -203,7 +205,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");
+ modperl_gtop_do_proc_mem_after(MP_FUNC);
);
#endif
Index: src/modules/perl/modperl_gtop.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
retrieving revision 1.7
diff -u -b -B -I$Id -r1.7 modperl_gtop.c
--- src/modules/perl/modperl_gtop.c 15 Mar 2001 01:55:44 -0000 1.7
+++ src/modules/perl/modperl_gtop.c 19 May 2003 03:25:48 -0000
@@ -95,7 +95,7 @@
}
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg)
+ char *when, const char *msg)
{
#define ss_item(item) gtop->proc_mem_ss.item
@@ -110,19 +110,19 @@
#undef ss_item
}
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_DIFF);
modperl_gtop_report_proc_mem(gtop, "diff", msg);
}
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_BEFORE);
modperl_gtop_report_proc_mem(gtop, "before", msg);
}
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_AFTER);
modperl_gtop_report_proc_mem(gtop, "after", msg);
Index: src/modules/perl/modperl_gtop.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.h,v
retrieving revision 1.3
diff -u -b -B -I$Id -r1.3 modperl_gtop.h
--- src/modules/perl/modperl_gtop.h 15 Mar 2001 01:55:44 -0000 1.3
+++ src/modules/perl/modperl_gtop.h 19 May 2003 03:25:48 -0000
@@ -36,10 +36,10 @@
void modperl_gtop_get_proc_mem_before(modperl_gtop_t *gtop);
void modperl_gtop_get_proc_mem_after(modperl_gtop_t *gtop);
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg);
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg);
+ char *when, const char *msg);
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char *msg);
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char *msg);
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char *msg);
#define modperl_gtop_do_proc_mem_before(msg) \
modperl_gtop_get_proc_mem_before(scfg->gtop); \
Index: src/modules/perl/modperl_interp.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
retrieving revision 1.58
diff -u -b -B -I$Id -r1.58 modperl_interp.c
--- src/modules/perl/modperl_interp.c 6 Apr 2003 23:49:46 -0000 1.58
+++ src/modules/perl/modperl_interp.c 19 May 2003 03:25:48 -0000
@@ -51,7 +51,10 @@
#ifdef MP_USE_GTOP
MP_dSCFG(mip->server);
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_clone");
+ if(!scfg->gtop) {
+ scfg->gtop = modperl_gtop_new(scfg->server->process->pool);
+ }
+ modperl_gtop_do_proc_mem_before(MP_FUNC);
);
#endif
@@ -99,7 +102,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_clone");
+ modperl_gtop_do_proc_mem_after(MP_FUNC);
);
#endif
}
--
-- -----------------------------------------------------------------------------
Philippe M. Chiasson /gozer\@(cpan|ectoplasm)\.org/ 88C3A5A5 (122FF51B/C634E37B)
http://gozer.ectoplasm.org/ F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3 A5A5
Q: It is impossible to make anything foolproof because fools are so ingenious.
perl -e'$$=\${gozer};{$_=unpack(P7,pack(L,$$));/^JAm_pH\n$/&&print||$$++&&redo}'
Re: [Patch] MP_GTOP=1
Posted by Stas Bekman <st...@stason.org>.
Philippe M. Chiasson wrote:
> On Tue, 2003-05-20 at 07:09, Stas Bekman wrote:
> [...]
>
>>I think that this patch (untested) is moving the init where it belongs to,
>>rather than adding test-n-test code everywhere where it could segfault:
>
>
> Yes stas, I thought about it but prefered to be lazy and leave the gtop
> creation where it was. It does belong in the server config creation.
haven't tested it, but looks +1
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: [Patch] MP_GTOP=1
Posted by "Philippe M. Chiasson" <go...@cpan.org>.
On Tue, 2003-05-20 at 07:09, Stas Bekman wrote:
[...]
>
> I think that this patch (untested) is moving the init where it belongs to,
> rather than adding test-n-test code everywhere where it could segfault:
Yes stas, I thought about it but prefered to be lazy and leave the gtop
creation where it was. It does belong in the server config creation.
# $Id: gtop.patch,v 1.4 2003/05/20 04:52:37 gozer Exp $
First, better off create scfg->gtop at server config creation
Index: src/modules/perl/modperl_config.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
retrieving revision 1.62
diff -u -I$Id -r1.62 modperl_config.c
--- src/modules/perl/modperl_config.c 3 Feb 2003 06:40:33 -0000 1.62
+++ src/modules/perl/modperl_config.c 20 May 2003 04:37:22 -0000
@@ -112,6 +112,10 @@
scfg->PassEnv = apr_table_make(p, 2);
scfg->SetEnv = apr_table_make(p, 2);
+#ifdef MP_USE_GTOP
+ scfg->gtop = modperl_gtop_new(p);
+#endif
+
modperl_config_srv_argv_push((char *)ap_server_argv0);
MP_TRACE_d(MP_FUNC, "0x%lx\n", (unsigned long)scfg);
Second, adjust for __func__
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.170
diff -u -I$Id -r1.170 mod_perl.c
--- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
+++ src/modules/perl/mod_perl.c 20 May 2003 04:50:17 -0000
@@ -147,8 +147,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- scfg->gtop = modperl_gtop_new(p);
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
+ modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_parse");
);
#endif
@@ -203,7 +202,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");
+ modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_parse");
);
#endif
Index: src/modules/perl/modperl_gtop.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
retrieving revision 1.7
diff -u -I$Id -r1.7 modperl_gtop.c
--- src/modules/perl/modperl_gtop.c 15 Mar 2001 01:55:44 -0000 1.7
+++ src/modules/perl/modperl_gtop.c 20 May 2003 04:50:17 -0000
@@ -95,12 +95,12 @@
}
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg)
+ char *when, const char *func, char *msg)
{
#define ss_item(item) gtop->proc_mem_ss.item
- fprintf(stderr, "%s %s: " ss_fmt "\n",
- msg, when,
+ fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
+ func, (msg ? msg : ""), when,
ss_item(size),
ss_item(vsize),
ss_item(resident),
@@ -110,22 +110,22 @@
#undef ss_item
}
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_DIFF);
- modperl_gtop_report_proc_mem(gtop, "diff", msg);
+ modperl_gtop_report_proc_mem(gtop, "diff", func, msg);
}
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_BEFORE);
- modperl_gtop_report_proc_mem(gtop, "before", msg);
+ modperl_gtop_report_proc_mem(gtop, "before", func, msg);
}
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_AFTER);
- modperl_gtop_report_proc_mem(gtop, "after", msg);
+ modperl_gtop_report_proc_mem(gtop, "after", func, msg);
}
#endif /* MP_USE_GTOP */
Index: src/modules/perl/modperl_gtop.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.h,v
retrieving revision 1.3
diff -u -I$Id -r1.3 modperl_gtop.h
--- src/modules/perl/modperl_gtop.h 15 Mar 2001 01:55:44 -0000 1.3
+++ src/modules/perl/modperl_gtop.h 20 May 2003 04:50:17 -0000
@@ -36,19 +36,19 @@
void modperl_gtop_get_proc_mem_before(modperl_gtop_t *gtop);
void modperl_gtop_get_proc_mem_after(modperl_gtop_t *gtop);
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg);
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg);
+ char *when, const char *func, char *msg);
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char* func, char *msg);
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char* func, char *msg);
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char* func, char *msg);
-#define modperl_gtop_do_proc_mem_before(msg) \
+#define modperl_gtop_do_proc_mem_before(func, msg) \
modperl_gtop_get_proc_mem_before(scfg->gtop); \
- modperl_gtop_report_proc_mem_before(scfg->gtop, msg)
+ modperl_gtop_report_proc_mem_before(scfg->gtop, func, msg)
-#define modperl_gtop_do_proc_mem_after(msg) \
+#define modperl_gtop_do_proc_mem_after(func, msg) \
modperl_gtop_get_proc_mem_after(scfg->gtop); \
- modperl_gtop_report_proc_mem_after(scfg->gtop, msg); \
- modperl_gtop_report_proc_mem_diff(scfg->gtop, msg)
+ modperl_gtop_report_proc_mem_after(scfg->gtop, func, msg); \
+ modperl_gtop_report_proc_mem_diff(scfg->gtop, func, msg)
#endif /* MP_USE_GTOP */
Index: src/modules/perl/modperl_interp.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
retrieving revision 1.58
diff -u -I$Id -r1.58 modperl_interp.c
--- src/modules/perl/modperl_interp.c 6 Apr 2003 23:49:46 -0000 1.58
+++ src/modules/perl/modperl_interp.c 20 May 2003 04:50:17 -0000
@@ -51,7 +51,7 @@
#ifdef MP_USE_GTOP
MP_dSCFG(mip->server);
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_clone");
+ modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_clone");
);
#endif
@@ -99,7 +99,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_clone");
+ modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_clone");
);
#endif
}
> Index: src/modules/perl/mod_perl.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> retrieving revision 1.170
> diff -u -r1.170 mod_perl.c
> --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> +++ src/modules/perl/mod_perl.c 19 May 2003 23:03:27 -0000
> @@ -147,7 +147,6 @@
>
> #ifdef MP_USE_GTOP
> MP_TRACE_m_do(
> - scfg->gtop = modperl_gtop_new(p);
> modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> );
> #endif
> Index: src/modules/perl/modperl_config.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
> retrieving revision 1.62
> diff -u -r1.62 modperl_config.c
> --- src/modules/perl/modperl_config.c 3 Feb 2003 06:40:33 -0000 1.62
> +++ src/modules/perl/modperl_config.c 19 May 2003 23:03:27 -0000
> @@ -116,6 +116,10 @@
>
> MP_TRACE_d(MP_FUNC, "0x%lx\n", (unsigned long)scfg);
>
> +#ifdef MP_USE_GTOP
> + scfg->gtop = modperl_gtop_new(p);
> +#endif
> +
> return scfg;
> }
>
>
> > This patches fixes the concatenation problem with MP_FUNC (aka __func__ )
> >
> > Index: src/modules/perl/mod_perl.c
> > ===================================================================
> > RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> > retrieving revision 1.170
> > diff -u -I$Id -r1.170 mod_perl.c
> > --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> > +++ src/modules/perl/mod_perl.c 19 May 2003 13:29:48 -0000
> > @@ -150,7 +150,7 @@
> > if (!scfg->gtop) {
> > scfg->gtop = modperl_gtop_new(p);
> > }
> > + modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_parse");
> > - modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> > );
> > #endif
> >
> > @@ -205,7 +205,7 @@
> >
> > #ifdef MP_USE_GTOP
> > MP_TRACE_m_do(
> > + modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_parse");
> > - modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");
> > );
> > #endif
> >
> >
> > Index: src/modules/perl/modperl_gtop.c
> > ===================================================================
> > RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
> > retrieving revision 1.7
> > diff -u -I$Id -r1.7 modperl_gtop.c
> > --- src/modules/perl/modperl_gtop.c 15 Mar 2001 01:55:44 -0000 1.7
> > +++ src/modules/perl/modperl_gtop.c 19 May 2003 13:29:48 -0000
> > @@ -95,12 +95,12 @@
> > }
> >
> > void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
> > - char *when, char *msg)
> > + char *when, const char *func, char *msg)
> > {
> > #define ss_item(item) gtop->proc_mem_ss.item
> >
> > - fprintf(stderr, "%s %s: " ss_fmt "\n",
> > - msg, when,
> > + fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
> > + func, msg, when,
> > ss_item(size),
> > ss_item(vsize),
> > ss_item(resident),
> > @@ -110,22 +110,22 @@
> > #undef ss_item
>
> While you are changing it, how about making msg an optional NULL? I suppose in
> some cases just passing func is good enough.
>
> fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
> func, (msg ? msg : ""), when,
> ...
>
> Hey, does anybody know why C doesn't have msg||""? ;)
>
Because there is no spoon !;-p
>
> __________________________________________________________________
> Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/ mod_perl Guide ---> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org http://ticketmaster.com
--
-- -----------------------------------------------------------------------------
Philippe M. Chiasson /gozer\@(cpan|ectoplasm)\.org/ 88C3A5A5 (122FF51B/C634E37B)
http://gozer.ectoplasm.org/ F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3 A5A5
Q: It is impossible to make anything foolproof because fools are so ingenious.
perl -e'$$=\${gozer};{$_=unpack(P7,pack(L,$$));/^JAm_pH\n$/&&print||$$++&&redo}'
Re: [Patch] MP_GTOP=1
Posted by Stas Bekman <st...@stason.org>.
Philippe M. Chiasson wrote:
[...]
> Patches follows:
>
> # $Id: gtop.patch,v 1.2 2003/05/19 13:43:06 gozer Exp $
>
> Recently tried building with MP_GTOP=1 and noticed that things don't quite
> work anymore. As per gcc documentation __func__ and __FUNCTION__ should not
> be used in string concatenation. Also in modperl_imterp, encountered some
> scfg without a valid gtop structure, so create it if not already there
>
>
> Index: src/modules/perl/mod_perl.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> retrieving revision 1.170
> diff -u -I$Id -r1.170 mod_perl.c
> --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> +++ src/modules/perl/mod_perl.c 19 May 2003 09:56:45 -0000
> @@ -147,7 +147,9 @@
>
> #ifdef MP_USE_GTOP
> MP_TRACE_m_do(
> - scfg->gtop = modperl_gtop_new(p);
> + if (!scfg->gtop) {
> + scfg->gtop = modperl_gtop_new(p);
> + }
> modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> );
> #endif
> Index: src/modules/perl/modperl_interp.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
> retrieving revision 1.58
> diff -u -I$Id -r1.58 modperl_interp.c
> --- src/modules/perl/modperl_interp.c 6 Apr 2003 23:49:46 -0000 1.58
> +++ src/modules/perl/modperl_interp.c 19 May 2003 09:56:45 -0000
> @@ -51,6 +51,9 @@
> #ifdef MP_USE_GTOP
> MP_dSCFG(mip->server);
> MP_TRACE_m_do(
> + if (!scfg->gtop) {
> + scfg->gtop = modperl_gtop_new(scfg->server->process->pool);
> + }
> modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_clone");
> );
> #endif
I think that this patch (untested) is moving the init where it belongs to,
rather than adding test-n-test code everywhere where it could segfault:
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.170
diff -u -r1.170 mod_perl.c
--- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
+++ src/modules/perl/mod_perl.c 19 May 2003 23:03:27 -0000
@@ -147,7 +147,6 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- scfg->gtop = modperl_gtop_new(p);
modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
);
#endif
Index: src/modules/perl/modperl_config.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
retrieving revision 1.62
diff -u -r1.62 modperl_config.c
--- src/modules/perl/modperl_config.c 3 Feb 2003 06:40:33 -0000 1.62
+++ src/modules/perl/modperl_config.c 19 May 2003 23:03:27 -0000
@@ -116,6 +116,10 @@
MP_TRACE_d(MP_FUNC, "0x%lx\n", (unsigned long)scfg);
+#ifdef MP_USE_GTOP
+ scfg->gtop = modperl_gtop_new(p);
+#endif
+
return scfg;
}
> This patches fixes the concatenation problem with MP_FUNC (aka __func__ )
>
> Index: src/modules/perl/mod_perl.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> retrieving revision 1.170
> diff -u -I$Id -r1.170 mod_perl.c
> --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> +++ src/modules/perl/mod_perl.c 19 May 2003 13:29:48 -0000
> @@ -150,7 +150,7 @@
> if (!scfg->gtop) {
> scfg->gtop = modperl_gtop_new(p);
> }
> + modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_parse");
> - modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> );
> #endif
>
> @@ -205,7 +205,7 @@
>
> #ifdef MP_USE_GTOP
> MP_TRACE_m_do(
> + modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_parse");
> - modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");
> );
> #endif
>
>
> Index: src/modules/perl/modperl_gtop.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
> retrieving revision 1.7
> diff -u -I$Id -r1.7 modperl_gtop.c
> --- src/modules/perl/modperl_gtop.c 15 Mar 2001 01:55:44 -0000 1.7
> +++ src/modules/perl/modperl_gtop.c 19 May 2003 13:29:48 -0000
> @@ -95,12 +95,12 @@
> }
>
> void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
> - char *when, char *msg)
> + char *when, const char *func, char *msg)
> {
> #define ss_item(item) gtop->proc_mem_ss.item
>
> - fprintf(stderr, "%s %s: " ss_fmt "\n",
> - msg, when,
> + fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
> + func, msg, when,
> ss_item(size),
> ss_item(vsize),
> ss_item(resident),
> @@ -110,22 +110,22 @@
> #undef ss_item
While you are changing it, how about making msg an optional NULL? I suppose in
some cases just passing func is good enough.
fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
func, (msg ? msg : ""), when,
...
Hey, does anybody know why C doesn't have msg||""? ;)
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: [Patch] MP_GTOP=1
Posted by "Philippe M. Chiasson" <go...@cpan.org>.
On Mon, 2003-05-19 at 11:55, Stas Bekman wrote:
> How come we don't see any gcc-3.3-compiency patches, yet? ;)
That won't be very long... Expect the reports to come a little bit later
this week. Do not fear, they will come.
> Philippe M. Chiasson wrote:
> > # $Id: gtop.patch,v 1.1 2003/05/19 03:29:19 gozer Exp $
> >
> > Recently tried building with MP_GTOP=1 and noticed that things don't quite
> > work for me anymore. As per gcc documentation __func__ and __FUNCTION__ should not
> > be used in string concatenation.
>
> Then the API should be changed to either accept 2 strings, or (...). Probably
> the former will do, with a second argument being an optional NULL. Whereas
> your patch removes important info.
Yeah, I didn't think of that.
> > Also in modperl_imterp, encountered some
> > scfg without a valid gtop structure, so create it if not already there.
>
> +1 (as a separate patch), but let me repeat: identation, identation, identation
I've been away from the code for just a few weeks, and I am starting to
get my old habits back ;-(
I think I got it right this time, and in 2 separate patches, one for the
possible segfault, the other for the added func argument to the gtop
API.
Patches follows:
# $Id: gtop.patch,v 1.2 2003/05/19 13:43:06 gozer Exp $
Recently tried building with MP_GTOP=1 and noticed that things don't quite
work anymore. As per gcc documentation __func__ and __FUNCTION__ should not
be used in string concatenation. Also in modperl_imterp, encountered some
scfg without a valid gtop structure, so create it if not already there
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.170
diff -u -I$Id -r1.170 mod_perl.c
--- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
+++ src/modules/perl/mod_perl.c 19 May 2003 09:56:45 -0000
@@ -147,7 +147,9 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
- scfg->gtop = modperl_gtop_new(p);
+ if (!scfg->gtop) {
+ scfg->gtop = modperl_gtop_new(p);
+ }
modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
);
#endif
Index: src/modules/perl/modperl_interp.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
retrieving revision 1.58
diff -u -I$Id -r1.58 modperl_interp.c
--- src/modules/perl/modperl_interp.c 6 Apr 2003 23:49:46 -0000 1.58
+++ src/modules/perl/modperl_interp.c 19 May 2003 09:56:45 -0000
@@ -51,6 +51,9 @@
#ifdef MP_USE_GTOP
MP_dSCFG(mip->server);
MP_TRACE_m_do(
+ if (!scfg->gtop) {
+ scfg->gtop = modperl_gtop_new(scfg->server->process->pool);
+ }
modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_clone");
);
#endif
This patches fixes the concatenation problem with MP_FUNC (aka __func__ )
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.170
diff -u -I$Id -r1.170 mod_perl.c
--- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
+++ src/modules/perl/mod_perl.c 19 May 2003 13:29:48 -0000
@@ -150,7 +150,7 @@
if (!scfg->gtop) {
scfg->gtop = modperl_gtop_new(p);
}
+ modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_parse");
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
);
#endif
@@ -205,7 +205,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
+ modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_parse");
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_parse");
);
#endif
Index: src/modules/perl/modperl_gtop.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
retrieving revision 1.7
diff -u -I$Id -r1.7 modperl_gtop.c
--- src/modules/perl/modperl_gtop.c 15 Mar 2001 01:55:44 -0000 1.7
+++ src/modules/perl/modperl_gtop.c 19 May 2003 13:29:48 -0000
@@ -95,12 +95,12 @@
}
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg)
+ char *when, const char *func, char *msg)
{
#define ss_item(item) gtop->proc_mem_ss.item
- fprintf(stderr, "%s %s: " ss_fmt "\n",
- msg, when,
+ fprintf(stderr, "%s : %s %s: " ss_fmt "\n",
+ func, msg, when,
ss_item(size),
ss_item(vsize),
ss_item(resident),
@@ -110,22 +110,22 @@
#undef ss_item
}
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_DIFF);
- modperl_gtop_report_proc_mem(gtop, "diff", msg);
+ modperl_gtop_report_proc_mem(gtop, "diff", func, msg);
}
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_BEFORE);
- modperl_gtop_report_proc_mem(gtop, "before", msg);
+ modperl_gtop_report_proc_mem(gtop, "before", func, msg);
}
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg)
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char *func, char *msg)
{
modperl_gtop_proc_mem_size_string(gtop, SS_TYPE_AFTER);
- modperl_gtop_report_proc_mem(gtop, "after", msg);
+ modperl_gtop_report_proc_mem(gtop, "after", func, msg);
}
#endif /* MP_USE_GTOP */
Index: src/modules/perl/modperl_gtop.h
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.h,v
retrieving revision 1.3
diff -u -I$Id -r1.3 modperl_gtop.h
--- src/modules/perl/modperl_gtop.h 15 Mar 2001 01:55:44 -0000 1.3
+++ src/modules/perl/modperl_gtop.h 19 May 2003 13:29:48 -0000
@@ -36,19 +36,19 @@
void modperl_gtop_get_proc_mem_before(modperl_gtop_t *gtop);
void modperl_gtop_get_proc_mem_after(modperl_gtop_t *gtop);
void modperl_gtop_report_proc_mem(modperl_gtop_t *gtop,
- char *when, char *msg);
-void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, char *msg);
-void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, char *msg);
+ char *when, const char *func, char *msg);
+void modperl_gtop_report_proc_mem_diff(modperl_gtop_t *gtop, const char* func, char *msg);
+void modperl_gtop_report_proc_mem_before(modperl_gtop_t *gtop, const char* func, char *msg);
+void modperl_gtop_report_proc_mem_after(modperl_gtop_t *gtop, const char* func, char *msg);
-#define modperl_gtop_do_proc_mem_before(msg) \
+#define modperl_gtop_do_proc_mem_before(func, msg) \
modperl_gtop_get_proc_mem_before(scfg->gtop); \
- modperl_gtop_report_proc_mem_before(scfg->gtop, msg)
+ modperl_gtop_report_proc_mem_before(scfg->gtop, func, msg)
-#define modperl_gtop_do_proc_mem_after(msg) \
+#define modperl_gtop_do_proc_mem_after(func, msg) \
modperl_gtop_get_proc_mem_after(scfg->gtop); \
- modperl_gtop_report_proc_mem_after(scfg->gtop, msg); \
- modperl_gtop_report_proc_mem_diff(scfg->gtop, msg)
+ modperl_gtop_report_proc_mem_after(scfg->gtop, func, msg); \
+ modperl_gtop_report_proc_mem_diff(scfg->gtop, func, msg)
#endif /* MP_USE_GTOP */
Index: src/modules/perl/modperl_interp.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
retrieving revision 1.58
diff -u -I$Id -r1.58 modperl_interp.c
--- src/modules/perl/modperl_interp.c 6 Apr 2003 23:49:46 -0000 1.58
+++ src/modules/perl/modperl_interp.c 19 May 2003 13:29:48 -0000
@@ -54,7 +54,7 @@
if (!scfg->gtop) {
scfg->gtop = modperl_gtop_new(scfg->server->process->pool);
}
+ modperl_gtop_do_proc_mem_before(MP_FUNC, "perl_clone");
- modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_clone");
);
#endif
@@ -102,7 +102,7 @@
#ifdef MP_USE_GTOP
MP_TRACE_m_do(
+ modperl_gtop_do_proc_mem_after(MP_FUNC, "perl_clone");
- modperl_gtop_do_proc_mem_after(MP_FUNC ": perl_clone");
);
#endif
}
> > Index: src/modules/perl/mod_perl.c
> > ===================================================================
> > RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> > retrieving revision 1.170
> > diff -u -b -B -I$Id -r1.170 mod_perl.c
> > --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> > +++ src/modules/perl/mod_perl.c 19 May 2003 03:25:48 -0000
> > @@ -147,8 +147,10 @@
> >
> > #ifdef MP_USE_GTOP
> > MP_TRACE_m_do(
> > + if(!scfg->gtop) {
> > scfg->gtop = modperl_gtop_new(p);
> > - modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> > + }
> > + modperl_gtop_do_proc_mem_before(MP_FUNC);
>
> tabs?
>
> __________________________________________________________________
> Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
> http://stason.org/ mod_perl Guide ---> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org http://apacheweek.com
> http://modperlbook.org http://apache.org http://ticketmaster.com
--
-- -----------------------------------------------------------------------------
Philippe M. Chiasson /gozer\@(cpan|ectoplasm)\.org/ 88C3A5A5 (122FF51B/C634E37B)
http://gozer.ectoplasm.org/ F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3 A5A5
Q: It is impossible to make anything foolproof because fools are so ingenious.
perl -e'$$=\${gozer};{$_=unpack(P7,pack(L,$$));/^JAm_pH\n$/&&print||$$++&&redo}'
Re: [Patch] MP_GTOP=1
Posted by Stas Bekman <st...@stason.org>.
How come we don't see any gcc-3.3-compiency patches, yet? ;)
Philippe M. Chiasson wrote:
> # $Id: gtop.patch,v 1.1 2003/05/19 03:29:19 gozer Exp $
>
> Recently tried building with MP_GTOP=1 and noticed that things don't quite
> work for me anymore. As per gcc documentation __func__ and __FUNCTION__ should not
> be used in string concatenation.
Then the API should be changed to either accept 2 strings, or (...). Probably
the former will do, with a second argument being an optional NULL. Whereas
your patch removes important info.
> Also in modperl_imterp, encountered some
> scfg without a valid gtop structure, so create it if not already there.
+1 (as a separate patch), but let me repeat: identation, identation, identation
> Index: src/modules/perl/mod_perl.c
> ===================================================================
> RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
> retrieving revision 1.170
> diff -u -b -B -I$Id -r1.170 mod_perl.c
> --- src/modules/perl/mod_perl.c 2 May 2003 01:35:03 -0000 1.170
> +++ src/modules/perl/mod_perl.c 19 May 2003 03:25:48 -0000
> @@ -147,8 +147,10 @@
>
> #ifdef MP_USE_GTOP
> MP_TRACE_m_do(
> + if(!scfg->gtop) {
> scfg->gtop = modperl_gtop_new(p);
> - modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
> + }
> + modperl_gtop_do_proc_mem_before(MP_FUNC);
tabs?
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org