develooper Front page | perl.perl5.porters | Postings from March 2000

Change to global destruction behaviour in 5.5.670?

Thread Next
Paul Moore
March 5, 2000 13:50
Change to global destruction behaviour in 5.5.670?
Message ID:
Has there been a change in the global destruction behaviour in Perl 5.5.670? I
seem to be getting some changed results while building various modules...

For example, the DBD::Oracle tests succeed, but produce a warning

(in cleanup) Can't call method "FETCH" on an undefined value at
E:/Applications/DevPerl/site/lib/Win32/ line 1486 during global

More seriously, Bit::Vector fails a lot of tests with "during global
destruction" messages.

I think there were other modules which reported the same sort of messages, but
they were warnings (or at least non-fatal) so I initially ignored them, and now
can't remember where they occurred...

I assume that Perl is the cause of the new message here - the same modules built
and passed all tests successfully on 5.005_03. But there seem to be two
possibilities - first, that the condition (which happens in a number of modules)
is benign, and Perl is being over-zealous in its warnings (there is some
precedent for this), and second, that this has exposed a significant issue which
has not been evident previously.

At the very least, something needs to be included in perldelta. Hmm, just
scanning perldelta, is this something to do with the removal of %@...? Do the
previously "accumulated" background errors now appear? If so, I guess the issue
is that where previously "background" errors were trapped and suppressed, they
are now user-visible. In which case, what of existing code which works
correctly, relying on the fact that errors in "background" code are suppressed
(in effect, wrapping an "eval" round such code)? Now, such code is displaying
errors or warnings. This strikes me as similar in impact to previous cases where
new warnings were introduced, and people complained that their web sites stopped
working... (Actually, it seems worse, as I can't see how to put an eval {} round
"global destruction" code...)

Comments welcome. For now, I'm ignoring test failures of this nature while doing
trial builds for 5.5.670, but I don't want to have to do this when 5.6 comes
out. [And I'm not sure that this counts as a module/application problem, if the
application works as it stands...]

Paul Moore.

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About