You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by go...@apache.org on 2007/11/13 00:27:15 UTC
svn commit: r594345 - in /perl/modperl/branches/threading/src/modules/perl:
modperl_callback.c modperl_cmd.c modperl_common_log.c modperl_debug.c
modperl_debug.h modperl_env.c modperl_handler.c modperl_mgv.c
modperl_util.c modperl_util.h
Author: gozer
Date: Mon Nov 12 15:27:08 2007
New Revision: 594345
URL: http://svn.apache.org/viewvc?rev=594345&view=rev
Log:
Cleanup modperl_trace() a little by always prefixing trace
messages with the current pid/tid and always adding a newline.
Simplifies things a little, and modperl_pid_tid() goes
away.
Reviewed-By: gozer
Submitted-By: Torsten Foertsch <to...@gmx.net>
Message-Id: <20...@gmx.net>
Modified:
perl/modperl/branches/threading/src/modules/perl/modperl_callback.c
perl/modperl/branches/threading/src/modules/perl/modperl_cmd.c
perl/modperl/branches/threading/src/modules/perl/modperl_common_log.c
perl/modperl/branches/threading/src/modules/perl/modperl_debug.c
perl/modperl/branches/threading/src/modules/perl/modperl_debug.h
perl/modperl/branches/threading/src/modules/perl/modperl_env.c
perl/modperl/branches/threading/src/modules/perl/modperl_handler.c
perl/modperl/branches/threading/src/modules/perl/modperl_mgv.c
perl/modperl/branches/threading/src/modules/perl/modperl_util.c
perl/modperl/branches/threading/src/modules/perl/modperl_util.h
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_callback.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_callback.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_callback.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_callback.c Mon Nov 12 15:27:08 2007
@@ -88,8 +88,7 @@
name = handler->name;
}
- MP_TRACE_h(MP_FUNC, "[%s %s] lookup of %s failed\n",
- modperl_pid_tid(p),
+ MP_TRACE_h(MP_FUNC, "[%s] lookup of %s failed\n",
modperl_server_desc(s, p), name);
ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
"lookup of '%s' failed", name);
@@ -254,8 +253,7 @@
modperl_callback_current_callback_set(desc);
- MP_TRACE_h(MP_FUNC, "[%s] running %d %s handlers\n",
- modperl_pid_tid(p), av->nelts, desc);
+ MP_TRACE_h(MP_FUNC, "running %d %s handlers\n", av->nelts, desc);
handlers = (modperl_handler_t **)av->elts;
for (i=0; i<av->nelts; i++) {
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_cmd.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_cmd.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_cmd.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_cmd.c Mon Nov 12 15:27:08 2007
@@ -69,17 +69,15 @@
*/
if (*name == '-') {
MP_TRACE_h(MP_FUNC,
- "[%s] warning: filter handler %s will be not autoloaded. "
+ "warning: filter handler %s will be not autoloaded. "
"Unless the module defining this handler is explicitly "
- "preloaded, filter attributes will be ignored.\n",
- modperl_pid_tid(p), h->name);
+ "preloaded, filter attributes will be ignored.\n");
}
else {
MpHandlerAUTOLOAD_On(h);
MP_TRACE_h(MP_FUNC,
- "[%s] filter handler %s will be autoloaded (to make "
- "the filter attributes available)\n",
- modperl_pid_tid(p), h->name);
+ "filter handler %s will be autoloaded (to make "
+ "the filter attributes available)\n", h->name);
}
if (!*handlers) {
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_common_log.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_common_log.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_common_log.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_common_log.c Mon Nov 12 15:27:08 2007
@@ -16,6 +16,7 @@
#include "modperl_common_includes.h"
#include "modperl_common_log.h"
+#include "modperl_debug.h"
#undef getenv /* from XSUB.h */
@@ -48,7 +49,17 @@
return;
}
- if (func) {
+ if (modperl_threaded_mpm()) {
+ apr_file_printf(logfile, "[%lu/%lu] ", (unsigned long)getpid(),
+ modperl_threads_started()
+ ? (unsigned long)apr_os_thread_current()
+ : 0);
+ }
+ else {
+ apr_file_printf(logfile, "[%lu] ", (unsigned long)getpid());
+ }
+
+ if (func && *func) {
apr_file_printf(logfile, "%s: ", func);
}
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_debug.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_debug.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_debug.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_debug.c Mon Nov 12 15:27:08 2007
@@ -21,28 +21,6 @@
return apr_psprintf(p, "%s:%u", s->server_hostname, s->port);
}
-/* used in debug traces */
-MP_INLINE char *modperl_pid_tid(apr_pool_t *p)
-{
- if (modperl_threaded_mpm()) {
- return apr_psprintf(p, "%lu"
-#if APR_HAS_THREADS
- "/%lu"
-#endif /* APR_HAS_THREADS */
- , (unsigned long)getpid()
-#if APR_HAS_THREADS
- , modperl_threads_started()
- ? (unsigned long)apr_os_thread_current()
- : 0
-#endif /* APR_HAS_THREADS */
- );
- }
- else {
- return apr_psprintf(p, "%lu", (unsigned long)getpid());
- }
-}
-
-
#ifdef MP_TRACE
void modperl_apr_table_dump(pTHX_ apr_table_t *table, char *name)
{
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_debug.h
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_debug.h?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_debug.h (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_debug.h Mon Nov 12 15:27:08 2007
@@ -20,7 +20,6 @@
#include "mod_perl.h"
char *modperl_server_desc(server_rec *s, apr_pool_t *p);
-MP_INLINE char *modperl_pid_tid(apr_pool_t *p);
#ifdef MP_TRACE
void modperl_apr_table_dump(pTHX_ apr_table_t *table, char *name);
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_env.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_env.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_env.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_env.c Mon Nov 12 15:27:08 2007
@@ -232,15 +232,15 @@
}
}
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->SetEnv} = values scfg->SetEnv;",
- modperl_pid_tid(p), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(s, p));
modperl_env_table_populate(aTHX_ scfg->SetEnv);
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->PassEnv} = values scfg->PassEnv;",
- modperl_pid_tid(p), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(s, p));
modperl_env_table_populate(aTHX_ scfg->PassEnv);
}
@@ -270,9 +270,9 @@
* collisions with per-server PerlSetEnv entries are
* resolved via the nature of a Perl hash
*/
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s]"
"\n\t@ENV{keys dcfg->SetEnv} = values dcfg->SetEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ dcfg->SetEnv);
@@ -303,9 +303,9 @@
*/
if (!apr_is_empty_table(scfg->SetEnv)) {
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->SetEnv} = values scfg->SetEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ scfg->SetEnv);
@@ -313,9 +313,9 @@
}
if (!apr_is_empty_table(scfg->PassEnv)) {
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->PassEnv} = values scfg->PassEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ scfg->PassEnv);
@@ -363,9 +363,9 @@
* phases from populating %ENV with new subprocess_env table entries
*/
- MP_TRACE_e(MP_FUNC, "\n\t[%s/0x%lx/%s%s]"
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx/%s%s]"
"\n\t@ENV{keys r->subprocess_env} = values r->subprocess_env;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
/* we can eliminate some of the cost by only doing CGI variables once
@@ -397,8 +397,8 @@
}
MP_TRACE_e(MP_FUNC,
- "\n\t[%s/0x%lx/%s%s]\n\tdelete @ENV{keys r->subprocess_env};",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ "\n\t[0x%lx/%s%s]\n\tdelete @ENV{keys r->subprocess_env};",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
modperl_env_table_unpopulate(aTHX_ r->subprocess_env);
@@ -411,8 +411,8 @@
EnvMgLenSet(-1);
#ifdef MP_PERL_HV_GMAGICAL_AWARE
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] tie %%ENV, $r\n\t (%s%s)",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] tie %%ENV, $r\n\t (%s%s)",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
SvGMAGICAL_on((SV*)ENVHV);
#endif
@@ -423,8 +423,8 @@
EnvMgObjSet(NULL);
#ifdef MP_PERL_HV_GMAGICAL_AWARE
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] untie %%ENV; # from r\n\t (%s%s)",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] untie %%ENV; # from r\n\t (%s%s)",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
SvGMAGICAL_off((SV*)ENVHV);
#endif
@@ -480,8 +480,7 @@
apr_table_set(r->subprocess_env,
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] localizing: %s => %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] localizing: %s => %s",
modperl_interp_address(aTHX),
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
@@ -493,17 +492,14 @@
HE *entry;
STRLEN n_a;
- MP_TRACE_e(MP_FUNC,
- "\n\t[%lu/0x%lx] populating %%ENV:",
- (unsigned long)getpid(), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx] populating %%ENV:",
+ modperl_interp_address(aTHX));
hv_iterinit((HV*)sv);
while ((entry = hv_iternext((HV*)sv))) {
I32 keylen;
MP_TRACE_e(MP_FUNC, "$ENV{%s} = \"%s\";",
- modperl_pid_tid(r->pool),
- modperl_interp_address(aTHX),
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
}
@@ -520,14 +516,12 @@
if (r) {
apr_table_clear(r->subprocess_env);
- MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] clearing all magic off r->subprocess_env",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "[0x%lx] clearing all magic off r->subprocess_env",
+ modperl_interp_address(aTHX));
}
else {
- MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] %%ENV = ();",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "[0x%lx] %%ENV = ();",
+ modperl_interp_address(aTHX));
return MP_PL_vtbl_call(env, clear);
}
@@ -542,8 +536,7 @@
MP_dENV_KEY;
MP_dENV_VAL;
apr_table_set(r->subprocess_env, key, val);
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] r->subprocess_env set: %s => %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] r->subprocess_env set: %s => %s",
modperl_interp_address(aTHX), key, val);
}
else {
@@ -551,8 +544,7 @@
MP_dENV_KEY;
MP_dENV_VAL;
MP_TRACE_e(MP_FUNC,
- "[%lu/0x%lx] $ENV{%s} = \"%s\";",
- (unsigned long)getpid(),
+ "[0x%lx] $ENV{%s} = \"%s\";",
modperl_interp_address(aTHX), key, val);
#endif
return MP_PL_vtbl_call(envelem, set);
@@ -568,15 +560,13 @@
if (r) {
MP_dENV_KEY;
apr_table_unset(r->subprocess_env, key);
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] r->subprocess_env unset: %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] r->subprocess_env unset: %s",
modperl_interp_address(aTHX), key);
}
else {
#ifdef MP_TRACE
MP_dENV_KEY;
- MP_TRACE_e(MP_FUNC, "[%lu/0x%lx] delete $ENV{%s};",
- (unsigned long)getpid(),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] delete $ENV{%s};",
modperl_interp_address(aTHX), key);
#endif
return MP_PL_vtbl_call(envelem, clear);
@@ -597,15 +587,13 @@
if ((val = apr_table_get(r->subprocess_env, key))) {
sv_setpv(sv, val);
MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] r->subprocess_env get: %s => %s",
- modperl_pid_tid(r->pool),
+ "[0x%lx] r->subprocess_env get: %s => %s",
modperl_interp_address(aTHX), key, val);
}
else {
sv_setsv(sv, &PL_sv_undef);
MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] r->subprocess_env get: %s => undef",
- modperl_pid_tid(r->pool),
+ "[0x%lx] r->subprocess_env get: %s => undef",
modperl_interp_address(aTHX), key);
}
}
@@ -614,8 +602,7 @@
#ifdef MP_TRACE
MP_dENV_KEY;
MP_TRACE_e(MP_FUNC,
- "[%lu/0x%lx] there is no svt_get in PL_vtbl_envelem: %s",
- (unsigned long)getpid(),
+ "[0x%lx] there is no svt_get in PL_vtbl_envelem: %s",
modperl_interp_address(aTHX), key);
#endif
}
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_handler.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_handler.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_handler.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_handler.c Mon Nov 12 15:27:08 2007
@@ -38,8 +38,7 @@
handler->cv = NULL;
handler->name = name;
- MP_TRACE_h(MP_FUNC, "[%s] new handler %s\n",
- modperl_pid_tid(p), handler->name);
+ MP_TRACE_h(MP_FUNC, "new handler %s\n", handler->name);
return handler;
}
@@ -104,8 +103,7 @@
anon->len = strlen(anon->name);
PERL_HASH(anon->hash, anon->name, anon->len);
- MP_TRACE_h(MP_FUNC, "[%s] new anon handler: '%s'",
- modperl_pid_tid(p), anon->name);
+ MP_TRACE_h(MP_FUNC, "new anon handler: '%s'", anon->name);
return anon;
}
@@ -174,8 +172,7 @@
handler->cv = cv;
handler->name = NULL;
- MP_TRACE_h(MP_FUNC, "[%s] new cached cv anon handler\n",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new cached cv anon handler\n");
#endif
return handler;
@@ -222,9 +219,8 @@
MpHandlerAUTOLOAD_On(handler);
MP_TRACE_h(MP_FUNC,
- "[%s %s] handler %s hasn't yet been resolved, "
+ "[%s] handler %s hasn't yet been resolved, "
"attempting to resolve using %s pool 0x%lx\n",
- modperl_pid_tid(p),
modperl_server_desc(s, p),
modperl_handler_name(handler),
duped ? "current" : "server conf",
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_mgv.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_mgv.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_mgv.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_mgv.c Mon Nov 12 15:27:08 2007
@@ -211,14 +211,12 @@
handler->name = NULL;
handler->mgv_obj = modperl_handler_anon_next(aTHX_ p);
modperl_handler_anon_add(aTHX_ handler->mgv_obj, cv);
- MP_TRACE_h(MP_FUNC, "[%s] new anon handler",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new anon handler");
#else
SvREFCNT_inc(cv);
handler->cv = cv;
handler->name = NULL;
- MP_TRACE_h(MP_FUNC, "[%s] new cached-cv anon handler",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new cached-cv anon handler");
#endif
FREETMPS;LEAVE;
@@ -340,8 +338,7 @@
modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
MpHandlerPARSED_On(handler);
- MP_TRACE_h(MP_FUNC, "[%s] found `%s' in class `%s' as a %s\n",
- modperl_pid_tid(p),
+ MP_TRACE_h(MP_FUNC, "found `%s' in class `%s' as a %s\n",
handler_name, HvNAME(stash),
MpHandlerMETHOD(handler) ? "method" : "function");
MODPERL_MGV_DEEP_RESOLVE(handler, p);
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_util.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_util.c?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_util.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_util.c Mon Nov 12 15:27:08 2007
@@ -470,9 +470,8 @@
I32 i, oldscope = PL_scopestack_ix;
SV **ary = AvARRAY(subs);
- MP_TRACE_g(MP_FUNC, "pid %lu" MP_TRACEf_TID MP_TRACEf_PERLID
- " running %d %s subs",
- (unsigned long)getpid(), MP_TRACEv_TID_ MP_TRACEv_PERLID_
+ MP_TRACE_g(MP_FUNC, MP_TRACEf_PERLID
+ " running %d %s subs", MP_TRACEv_PERLID_
AvFILLp(subs)+1, name);
for (i=0; i<=AvFILLp(subs); i++) {
Modified: perl/modperl/branches/threading/src/modules/perl/modperl_util.h
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_util.h?rev=594345&r1=594344&r2=594345&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_util.h (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_util.h Mon Nov 12 15:27:08 2007
@@ -101,20 +101,8 @@
apr_array_header_t *modperl_avrv2apr_array_header(pTHX_ apr_pool_t *p,
SV *avrv);
void modperl_package_unload(pTHX_ const char *package);
-#if defined(MP_TRACE) && APR_HAS_THREADS
-#define MP_TRACEf_TID "/tid 0x%lx"
-#define MP_TRACEv_TID (unsigned long)apr_os_thread_current()
-#define MP_TRACEv_TID_ MP_TRACEv_TID,
-#define MP_TRACEv__TID ,MP_TRACEv_TID
-#else
-#define MP_TRACEf_TID
-#define MP_TRACEv_TID
-#define MP_TRACEv_TID_
-#define MP_TRACEv__TID
-#endif /* APR_HAS_THREADS */
-
#if defined(MP_TRACE) && defined(USE_ITHREADS)
-#define MP_TRACEf_PERLID "/perl id 0x%lx"
+#define MP_TRACEf_PERLID "perl id 0x%lx"
#define MP_TRACEv_PERLID (unsigned long)my_perl
#define MP_TRACEv_PERLID_ MP_TRACEv_PERLID,
#define MP_TRACEv__PERLID ,MP_TRACEv_PERLID