在生產環境中運行的穩定的,基於Web的單線程/進程perl應用程序開始間歇性地拋出此錯誤只有在系統負載很重的情況下。我們無法確定根本原因。Perl將死亡:「用法:在全局銷燬期間DBD :: Pg :: db :: DESTROY(dbh)」
Usage: DBD::Pg::db::DESTROY(dbh) during global destruction
任何人都可以提供這種錯誤的任何解釋?當Perl在關閉之前清理時,如果不帶參數調用DESTROY(self?),它似乎是從Pg.sx拋出的。 (我看到這樣的信息在通過谷歌舊的源代碼,但不是在我們的版本。)我們的環境:
- OS:在FreeBSD 8.3-STABLE
- 的Perl v5.14.2
- DBD ::第2版。 19.3
- 的PostgreSQL:v9.2.3
您的代碼是否曾經明確地調用(或者可能轉到)DESTROY?通過AUTOLOAD,也許?什麼版本的DBI? – pilcrow 2013-02-22 22:36:51
@pilcrow - (對不起,我以前沒有注意到您的評論。)DBI v1.623。我的代碼不會調用DESTROY或使用AUTOLOAD。這個過程似乎是完整的,Perl正在清理。我有一個信號處理程序捕獲異常並打印一個小堆棧跟蹤(caller()),它只顯示正在運行的陷阱例程,而不是從我的代碼(當它捕獲真正的錯誤時發生)。 – Allen 2013-03-04 16:09:15