On Saturday 23 October 2004 06:50 pm, Ron Savage wrote:
> On Sat, 23 Oct 2004 06:22:12 -0400, Marc M. Adkins wrote:
> >>> I have been getting an annoying warning about dereferencing
> >>
> >> an unreferenced
> >>
> >>> scalar. Sometimes it comes out in such a way that it
> >>
> >> misses $SIG{__WARN__}
>
> I'm using Perl v5.8.4, although not directly from ActiveState.
>
> Ahh, but did you really install it? Probably not.
>
> What happens is the the DLL is locked by the OS after being used, eg by
> running a program which does 'use DBI;'.
>
> You have to reboot before the DLL is free to be deleted and thus replaced.
> You may have missed the error msg in the heat of the moment:
In fact I did not. I saw the error message, quit all my running scripts
(d-oh), and did it all again. At which point it worked as advertised.
DLLs actually free up after the last program using them exits. I've done some
DLL development (as well as XS development) and the NT derivatives of Windows
do the right thing in any normal situation. Otherwise one would have to
reboot after every recompile of a DLL during development and I can assure you
that this is not the case.
Under Windows 3.1 this wasn't true. DLLs would get locked into memory if the
program that loaded them aborted badly. That was nightmarish. Recompile and
recompile and nothing ever changes because the DLL was never unloaded. But
NT 3.5, NT 4 and W2K have all behaved well in this regard, at least in my
experience.
YMMV of course. I'm sure it's possible to lock a DLL somehow, for example by
locking the loading application. MS Word seems to do this a lot without any
help at all, but Microsoft engineers probably know things about locking up
Windows that we can only dream about.
> I really suspect your particular setup - nothing personal :-).
I was sceptical but I went back to work today and did it all again. Several
times. Each time PPM would say it was (un)installing 1.45. But each time I
looked at the installed source (the DBI.pm file, never mind the DLL) it said
1.43 and had a revision date of February 2004.
Finally I sent off a message to ActiveState. They responded (in part):
You are correct, sir - there seems to be some confusion on PPM right now.
I have escalated the issue to our build team and hope to have some news
for you in a day or so.
So I'm thinking that I did install it properly but it wasn't the right stuff.
Hopefully this will resolve quickly, but in the meantime ActiveState's PPM
respository may not be up to their usual standards.
mma