Can't locate object method "new" via package "Parallel::ForkManager" (perhaps
you forgot to load "Parallel::ForkManager"?) at C:\Documents and Settings\Owner\Desktop\n13.pl line 40 (#2)
Uncaught exception from user code:
Can't locate object method "new" via package "Parallel::ForkManager" (perhaps you forgot to load "Parallel::ForkManager"?) at C:\Documents and Settings\Owner\Desktop\n13.pl line 40.
at C:\Documents and Settings\Owner\Desktop\n13.pl line 40
####
C:\Documents and Settings\Owner\Desktop>perl n13.pl
Name "main::OUTPUT" used only once: possible typo at n13.pl line 39 (#1)
(W once) Typographical errors often show up as unique variable names.
If you had a good reason for having a unique name, then just mention it
again somehow to suppress the message. The our declaration is
provided for this purpose.
NOTE: This warning detects symbols that have been used only once so $c, @c,
%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
the same; if a program uses $c only once but also uses any of the others it
will not trigger this warning.
Parsing of undecoded UTF-8 will give garbage when decoding entities at n13.pl li
ne 58, line 2.
C:\Documents and Settings\Owner\Desktop>
####
C:\Documents and Settings\Owner\Desktop>perl -d n13.pl
Name "main::OUTPUT" used only once: possible typo at n13.pl line 39 (#1)
(W once) Typographical errors often show up as unique variable names.
If you had a good reason for having a unique name, then just mention it
again somehow to suppress the message. The our declaration is
provided for this purpose.
NOTE: This warning detects symbols that have been used only once so $c, @c,
%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
the same; if a program uses $c only once but also uses any of the others it
will not trigger this warning.
Attempt to free non-existent shared string 'ì‚', Perl interpreter: 0x7331ad4 at
(eval 2)[C:/Perl/lib/DynaLoader.pm:225] line 1, line 3.
Attempt to free non-existent shared string 'LineNumber', Perl interpreter: 0x733
1ad4 at (eval 2)[C:/Perl/lib/DynaLoader.pm:225] line 1, line 3.
Attempt to free non-existent shared string 'SourceFile', Perl interpreter: 0x733
1ad4 at (eval 2)[C:/Perl/lib/DynaLoader.pm:225] line 1, line 3.
Attempt to free non-existent shared string 'WatchList', Perl interpreter: 0x7331
ad4 at (eval 2)[C:/Perl/lib/DynaLoader.pm:225] line 1, line 3.
Attempt to free non-existent shared string 'Command', Perl interpreter: 0x7331ad
4 at (eval 2)[C:/Perl/lib/DynaLoader.pm:225] line 1, line 3.
Free to wrong pool 59184e0 not 235c78 at (eval 2)[C:/Perl/lib/DynaLoader.pm:225]
line 1, line 3.
C:\Documents and Settings\Owner\Desktop>
####
> perl510.dll!VMem::Free(void * pMem=0x0187742c) Line 218 C++
perl510.dll!PerlMemFree(IPerlMem * piPerl=0x0781ed6c, void * ptr=0x0187742c) Line 310 C++
perl510.dll!Perl_safesysfree(void * where=0x0187742c) Line 250 + 0xe C
perl510.dll!Perl_hv_undef(interpreter * my_perl=0x07823a1c, hv * hv=0x00000000) Line 1786 C
perl510.dll!Perl_sv_clear(interpreter * my_perl=0x07823a1c, sv * sv=0x0000000c) Line 5184 + 0x7 C
perl510.dll!Perl_sv_free2(interpreter * my_perl=0x07823a1c, sv * sv=0x01a21a34) Line 5367 C
perl510.dll!Perl_sv_free(interpreter * my_perl=0x07823a1c, sv * sv=0x01a21a34) Line 5345 + 0xa C
OLE.dll!ReleasePerlObject(interpreter * my_perl=0x000573fc, WINOLEOBJECT * pObj=0x01a525d4) Line 1198 C++
OLE.dll!Uninitialize(interpreter * my_perl=0x07823a1c, PERINTERP * pInterp=0x01a2fe14) Line 3271 + 0xa C++
OLE.dll!XS_Win32__OLE_Initialize(interpreter * my_perl=0x08493700, cv * cv=0x00360b14) Line 3478 + 0x7 C++
perl510.dll!Perl_pp_entersub(interpreter * my_perl=0x079933f4) Line 2847 + 0x4 C
perl510.dll!Perl_runops_standard(interpreter * my_perl=0x07823a1c) Line 36 + 0xc C
perl510.dll!Perl_call_sv(interpreter * my_perl=0x07823a1c, sv * sv=0x08651a84, long flags=6) Line 2647 + 0xc C
perl510.dll!Perl_call_list(interpreter * my_perl=0x07823a1c, long oldscope=9, av * paramList=0x086519d4) Line 5158 C
perl510.dll!win32_start_child(void * arg=0x07823a1c) Line 1778 + 0xa C++
kernel32.dll!_BaseThreadStart@8() + 0x37
####
my @unresolved = dl_undef_symbols();
if (@unresolved) {
require Carp;
Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
}
$boot_symbol_ref = dl_find_symbol($libref, $bootname) or
croak("Can't find '$bootname' symbol in $file\n");
push(@dl_modules, $module); # record loaded module
boot:
my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
# See comment block above
push(@dl_shared_objects, $file); # record files loaded
>>>>>>>>>>>>>>>>>>>> &$xs(@args);
}
####
void
Initialize(...)
ALIAS:
Uninitialize = 1
SpinMessageLoop = 2
MessageLoop = 3
QuitMessageLoop = 4
FreeUnusedLibraries = 5
_Unique = 6
PPCODE:
{
char *paszMethod[] = {"Initialize", "Uninitialize", "SpinMessageLoop",
"MessageLoop", "QuitMessageLoop",
"FreeUnusedLibraries", "_Unique"};
if (CallObjectMethod(aTHX_ mark, ax, items, paszMethod[ix]))
return;
DBG(("Win32::OLE->%s()\n", paszMethod[ix]));
if (items == 0) {
warn("Win32::OLE->%s must be called as class method", paszMethod[ix]);
XSRETURN_EMPTY;
}
HV *stash = gv_stashsv(ST(0), TRUE);
SetLastOleError(aTHX_ stash);
switch (ix) {
case 0: { // Initialize
DWORD dwCoInit = COINIT_MULTITHREADED;
if (items > 1 && SvOK(ST(1)))
dwCoInit = (DWORD)SvIV(ST(1));
Initialize(aTHX_ gv_stashsv(ST(0), TRUE), dwCoInit);
break;
}
case 1: { // Uninitialize
dPERINTERP;
>>>>>>>>>>>>> Uninitialize(aTHX_ INTERP);
break;
####
void
Uninitialize(pTHX_ PERINTERP *pInterp)
{
DBG(("Uninitialize\n"));
EnterCriticalSection(&g_CriticalSection);
if (g_bInitialized) {
OBJECTHEADER *pHeader = g_pObj;
while (pHeader) {
DBG(("Zombiefy object |%lx| lMagic=%lx\n",
pHeader, pHeader->lMagic));
switch (pHeader->lMagic) {
case WINOLE_MAGIC:
>>>>>>>>>>>> ReleasePerlObject(aTHX_ (WINOLEOBJECT*)pHeader);
break;
####
void
ReleasePerlObject(pTHX_ WINOLEOBJECT *pObj)
{
dSP;
HV *stash = SvSTASH(pObj->self);
DBG(("ReleasePerlObject |%lx|", pObj));
if (!pObj)
return;
/* ReleasePerlObject may be called multiple times for a single object:
* first by Uninitialize() and then by Win32::OLE::DESTROY.
* Make sure nothing is cleaned up twice!
*/
if (pObj->destroy) {
SV *self = sv_2mortal(newRV_inc((SV*)pObj->self));
/* honour OVERLOAD setting */
if (Gv_AMG(stash))
SvAMAGIC_on(self);
DBG((" Calling destroy method for object |%lx|\n", pObj));
ENTER;
SAVETMPS;
if (SvPOK(pObj->destroy)) {
/* $self->Dispatch($destroy,$retval); */
EXTEND(SP, 3);
PUSHMARK(sp);
PUSHs(self);
PUSHs(pObj->destroy);
PUSHs(sv_newmortal());
PUTBACK;
perl_call_method("Dispatch", G_DISCARD);
}
else {
/* &$destroy($self); */
PUSHMARK(sp);
XPUSHs(self);
PUTBACK;
perl_call_sv(pObj->destroy, G_DISCARD);
}
FREETMPS;
LEAVE;
DBG((" Returned from destroy method for 0x%08x\n", pObj));
SvREFCNT_dec(pObj->destroy);
pObj->destroy = NULL;
}
if (pObj->pEventSink) {
DBG((" Unadvise connection |%lx|", pObj));
pObj->pEventSink->Unadvise();
pObj->pEventSink = NULL;
}
if (pObj->pDispatch) {
if (pObj->flags & OBJFLAG_UNIQUE) {
dPERINTERP;
IUnknown *punk; // XXX check error?
pObj->pDispatch->QueryInterface(IID_IUnknown, (void**)&punk);
hv_delete(g_hv_unique, (char*)&punk, sizeof(punk), G_DISCARD);
DBG((" hv_delete(%08x)", punk));
punk->Release();
}
DBG((" Release pDispatch"));
pObj->pDispatch->Release();
pObj->pDispatch = NULL;
}
if (pObj->pTypeInfo) {
DBG((" Release pTypeInfo"));
pObj->pTypeInfo->Release();
pObj->pTypeInfo = NULL;
}
if (pObj->pEnum) {
DBG((" Release pEnum"));
pObj->pEnum->Release();
pObj->pEnum = NULL;
}
if (pObj->destroy) {
DBG((" destroy(%d)", SvREFCNT(pObj->destroy)));
SvREFCNT_dec(pObj->destroy);
pObj->destroy = NULL;
}
if (pObj->hashTable) {
DBG((" hashTable(%d)", SvREFCNT(pObj->hashTable)));
>>>>>>>>>>>>>>>> SvREFCNT_dec(pObj->hashTable);
pObj->hashTable = NULL;
}
DBG(("\n"));
} /* ReleasePerlObject */